DescribeImages
Query available image resources on AlibabaCloud by specifying ImageId, usage scenarios, and filters to manage and deploy instances efficiently.
Instructions
指定ImageId、镜像被使用场景、Filter过滤等参数,查询您可以使用的镜像资源列表。
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ActionType | No | 镜像需要被使用到的场景。取值范围: - CreateEcs(默认):创建实例。 - ChangeOS:更换系统盘/更换操作系统。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:CreateEcs | |
| Architecture | No | 镜像的体系架构。取值范围: - i386。 - x86_64。 - arm64。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:i386 | |
| DryRun | No | 是否只预检此次请求。 - true:发送检查请求,不会查询资源状况。检查项包括AccessKey是否有效、RAM用户的授权情况和是否填写了必需参数。如果检查不通过,则返回对应错误。如果检查通过,会返回错误码DryRunOperation。 - false:发送正常请求,通过检查后返回2XX HTTP状态码并直接查询资源状况。 默认值:false。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false | |
| Filter | No | 查询资源时的筛选条件列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: array,参数示例: | |
| ImageFamily | No | 镜像族系名称,查询镜像时可通过设置该参数来过滤当前族系对应的镜像。 默认值:空。 > 阿里云官方镜像关联的镜像族系信息请参见[公共镜像概述](~~108393~~)。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:hangzhou-daily-update | |
| ImageId | No | 镜像ID。 <details> <summary>镜像ID的命名规则</summary> - 公共镜像:以操作系统版本号、架构、语言和发布日期命名。例如,Windows Server 2008 R2企业版、64位英文系统的镜像ID为win2008r2_64_ent_sp1_en-us_40G_alibase_20190318.vhd。 - 自定义镜像、共享镜像、云市场镜像、社区镜像的镜像:以m开头。 </details> 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:m-bp1g7004ksh0oeuc**** | |
| ImageName | No | 镜像名称。支持模糊搜索。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:testImageName | |
| ImageOwnerAlias | No | 镜像来源。取值范围: - system:阿里云官方提供的,且不是通过云市场发布的镜像,和控制台中的“公共镜像”概念不同。 - self:您创建的自定义镜像。 - others:包含共享镜像(其他阿里云用户直接共享给您的镜像)和社区镜像(任意阿里云用户将其自定义镜像完全公开共享后的镜像)。您需要注意: - 查找社区镜像时,IsPublic必须为true。 - 查找共享镜像时,IsPublic需要设置为false或者不传值。 - marketplace:阿里云或者第三方供应商ISV在云市场发布的镜像,需要和ECS一起购买。请自行留意云市场镜像的收费详情。 默认值:空。 >空表示返回取值为system、self以及others的结果。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:self | |
| ImageOwnerId | No | 镜像所属的阿里云账号ID。该参数仅在查询共享镜像以及社区镜像时生效。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:20169351435666**** | |
| InstanceType | No | 为指定的实例规格查询可以使用的镜像。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:ecs.g5.large | |
| IsPublic | No | 是否查询已发布的社区镜像。取值范围: - true:查询已发布的社区镜像。当您指定该参数值为true时,ImageOwnerAlias必须为others。 - false:查询除社区镜像的其他镜像类型,具体以ImageOwnerAlias参数值为准。 默认值:false。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false | |
| IsSupportCloudinit | No | 镜像是否支持cloud-init。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:true | |
| IsSupportIoOptimized | No | 镜像是否可以运行在I/O优化实例上。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:true | |
| OSType | No | 镜像的操作系统类型。取值范围: - windows。 - linux。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:linux | |
| PageNumber | No | 镜像资源列表的页码。 起始值:1。 默认值:1。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:1 | |
| PageSize | No | 分页查询时设置的每页行数。 最大值:100。 默认值:10。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:10 | |
| RegionId | Yes | 镜像所属的地域ID。您可以调用[DescribeRegions](~~25609~~)查看最新的阿里云地域列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:cn-hangzhou | |
| ResourceGroupId | No | 自定义镜像所在的企业资源组ID。使用该参数过滤资源时,资源数量不能超过1000个。 >不支持默认资源组过滤。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:rg-bp67acfmxazb4p**** | |
| ShowExpired | No | 订阅型镜像是否已经超过使用期限。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false | |
| SnapshotId | No | 根据某一快照ID创建的自定义镜像。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:s-bp17ot2q7x72ggtw**** | |
| Status | No | 查询指定状态的镜像,如果不配置此参数,默认只返回Available状态的镜像。取值范围: - Creating:镜像正在创建中。 - Waiting:多任务排队中。 - Available(默认):您可以使用的镜像。 - UnAvailable:您不能使用的镜像。 - CreateFailed:创建失败的镜像。 - Deprecated:已弃用的镜像。 默认值:Available。当前参数支持同时取多个值,值之间以半角逗号(,)隔开。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:Available | |
| Tag | No | 标签列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: array,参数示例: | |
| Usage | No | 镜像是否已经运行在ECS实例中。取值范围: - instance:镜像处于运行状态,有ECS实例使用。 - none:镜像处于闲置状态,暂无ECS实例使用。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:instance |
Input Schema (JSON Schema)
{
"properties": {
"ActionType": {
"default": null,
"description": "镜像需要被使用到的场景。取值范围:\n\n- CreateEcs(默认):创建实例。\n- ChangeOS:更换系统盘/更换操作系统。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:CreateEcs",
"title": "Actiontype",
"type": "string"
},
"Architecture": {
"default": null,
"description": "镜像的体系架构。取值范围:\n\n- i386。\n- x86_64。\n- arm64。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:i386",
"title": "Architecture",
"type": "string"
},
"DryRun": {
"default": null,
"description": "是否只预检此次请求。\n \n- true:发送检查请求,不会查询资源状况。检查项包括AccessKey是否有效、RAM用户的授权情况和是否填写了必需参数。如果检查不通过,则返回对应错误。如果检查通过,会返回错误码DryRunOperation。 \n- false:发送正常请求,通过检查后返回2XX HTTP状态码并直接查询资源状况。 \n\n默认值:false。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false",
"title": "Dryrun",
"type": "boolean"
},
"Filter": {
"default": null,
"description": "查询资源时的筛选条件列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: array,参数示例:",
"items": {},
"title": "Filter",
"type": "array"
},
"ImageFamily": {
"default": null,
"description": "镜像族系名称,查询镜像时可通过设置该参数来过滤当前族系对应的镜像。\n\n默认值:空。\n> 阿里云官方镜像关联的镜像族系信息请参见[公共镜像概述](~~108393~~)。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:hangzhou-daily-update",
"title": "Imagefamily",
"type": "string"
},
"ImageId": {
"default": null,
"description": "镜像ID。\n\n<details>\n<summary>镜像ID的命名规则</summary>\n\n- 公共镜像:以操作系统版本号、架构、语言和发布日期命名。例如,Windows Server 2008 R2企业版、64位英文系统的镜像ID为win2008r2_64_ent_sp1_en-us_40G_alibase_20190318.vhd。\n\n- 自定义镜像、共享镜像、云市场镜像、社区镜像的镜像:以m开头。\n\n</details> 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:m-bp1g7004ksh0oeuc****",
"title": "Imageid",
"type": "string"
},
"ImageName": {
"default": null,
"description": "镜像名称。支持模糊搜索。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:testImageName",
"title": "Imagename",
"type": "string"
},
"ImageOwnerAlias": {
"default": null,
"description": "镜像来源。取值范围:\n\n- system:阿里云官方提供的,且不是通过云市场发布的镜像,和控制台中的“公共镜像”概念不同。\n- self:您创建的自定义镜像。\n- others:包含共享镜像(其他阿里云用户直接共享给您的镜像)和社区镜像(任意阿里云用户将其自定义镜像完全公开共享后的镜像)。您需要注意:\n - 查找社区镜像时,IsPublic必须为true。\n - 查找共享镜像时,IsPublic需要设置为false或者不传值。\n- marketplace:阿里云或者第三方供应商ISV在云市场发布的镜像,需要和ECS一起购买。请自行留意云市场镜像的收费详情。\n\n默认值:空。\n\n>空表示返回取值为system、self以及others的结果。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:self",
"title": "Imageowneralias",
"type": "string"
},
"ImageOwnerId": {
"default": null,
"description": "镜像所属的阿里云账号ID。该参数仅在查询共享镜像以及社区镜像时生效。\n\n 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:20169351435666****",
"title": "Imageownerid",
"type": "integer"
},
"InstanceType": {
"default": null,
"description": "为指定的实例规格查询可以使用的镜像。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:ecs.g5.large",
"title": "Instancetype",
"type": "string"
},
"IsPublic": {
"default": null,
"description": "是否查询已发布的社区镜像。取值范围:\n\n- true:查询已发布的社区镜像。当您指定该参数值为true时,ImageOwnerAlias必须为others。\n- false:查询除社区镜像的其他镜像类型,具体以ImageOwnerAlias参数值为准。\n\n默认值:false。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false",
"title": "Ispublic",
"type": "boolean"
},
"IsSupportCloudinit": {
"default": null,
"description": "镜像是否支持cloud-init。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:true",
"title": "Issupportcloudinit",
"type": "boolean"
},
"IsSupportIoOptimized": {
"default": null,
"description": "镜像是否可以运行在I/O优化实例上。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:true",
"title": "Issupportiooptimized",
"type": "boolean"
},
"OSType": {
"default": null,
"description": "镜像的操作系统类型。取值范围:\n\n- windows。\n- linux。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:linux",
"title": "Ostype",
"type": "string"
},
"PageNumber": {
"default": null,
"description": "镜像资源列表的页码。\n\n起始值:1。\n\n默认值:1。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:1",
"title": "Pagenumber",
"type": "integer"
},
"PageSize": {
"default": null,
"description": "分页查询时设置的每页行数。\n\n最大值:100。\n\n默认值:10。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: integer,参数示例:10",
"title": "Pagesize",
"type": "integer"
},
"RegionId": {
"description": "镜像所属的地域ID。您可以调用[DescribeRegions](~~25609~~)查看最新的阿里云地域列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:cn-hangzhou",
"title": "Regionid",
"type": "string"
},
"ResourceGroupId": {
"default": null,
"description": "自定义镜像所在的企业资源组ID。使用该参数过滤资源时,资源数量不能超过1000个。\n\n>不支持默认资源组过滤。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:rg-bp67acfmxazb4p****",
"title": "Resourcegroupid",
"type": "string"
},
"ShowExpired": {
"default": null,
"description": "订阅型镜像是否已经超过使用期限。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: boolean,参数示例:false",
"title": "Showexpired",
"type": "boolean"
},
"SnapshotId": {
"default": null,
"description": "根据某一快照ID创建的自定义镜像。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:s-bp17ot2q7x72ggtw****",
"title": "Snapshotid",
"type": "string"
},
"Status": {
"default": null,
"description": "查询指定状态的镜像,如果不配置此参数,默认只返回Available状态的镜像。取值范围:\n\n- Creating:镜像正在创建中。\n- Waiting:多任务排队中。\n- Available(默认):您可以使用的镜像。\n- UnAvailable:您不能使用的镜像。\n- CreateFailed:创建失败的镜像。\n- Deprecated:已弃用的镜像。\n\n默认值:Available。当前参数支持同时取多个值,值之间以半角逗号(,)隔开。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:Available",
"title": "Status",
"type": "string"
},
"Tag": {
"default": null,
"description": "标签列表。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: array,参数示例:",
"items": {},
"title": "Tag",
"type": "array"
},
"Usage": {
"default": null,
"description": "镜像是否已经运行在ECS实例中。取值范围:\n\n- instance:镜像处于运行状态,有ECS实例使用。\n- none:镜像处于闲置状态,暂无ECS实例使用。 请注意,提供参数要严格按照参数的类型和参数示例的提示,如果提到参数为String,且为一个 JSON 数组字符串,应在数组内使用单引号包裹对应的参数以避免转义问题,并在最外侧用双引号包裹以确保其是字符串,否则可能会导致参数解析错误。参数类型: string,参数示例:instance",
"title": "Usage",
"type": "string"
}
},
"required": [
"RegionId"
],
"title": "DescribeImagesArguments",
"type": "object"
}
Implementation Reference
- Generic handler that executes Alibaba Cloud ECS DescribeImages API call using dynamic parameters and OpenAPI client.def _tools_api_call(service: str, api: str, parameters: dict, ctx: Context): service = service.lower() api_meta, _ = ApiMetaClient.get_api_meta(service, api) version = ApiMetaClient.get_service_version(service) method = 'POST' if api_meta.get('methods', [])[0] == 'post' else 'GET' path = api_meta.get('path', '/') style = ApiMetaClient.get_service_style(service) # Handling special parameter formats processed_parameters = parameters.copy() processed_parameters = {k: v for k, v in processed_parameters.items() if v is not None} if service == 'ecs': for param_name, param_value in parameters.items(): if param_name in ECS_LIST_PARAMETERS and isinstance(param_value, list): processed_parameters[param_name] = json.dumps(param_value) req = open_api_models.OpenApiRequest( query=OpenApiUtilClient.query(processed_parameters) ) params = open_api_models.Params( action=api, version=version, protocol='HTTPS', pathname=path, method=method, auth_type='AK', style=style, req_body_type='formData', body_type='json' ) logger.info(f'Call API Request: Service: {service} API: {api} Method: {method} Parameters: {processed_parameters}') client = create_client(service, processed_parameters.get('RegionId', 'cn-hangzhou')) runtime = util_models.RuntimeOptions() resp = client.call_api(params, req, runtime) logger.info(f'Call API Response: {resp}') return resp
- src/alibaba_cloud_ops_mcp_server/tools/api_tools.py:267-271 (registration)Registers the dynamic tool for 'DescribeImages' (named 'ECS_DescribeImages') by iterating over config['ecs'] list.def create_api_tools(mcp: FastMCP, config:dict): for service_code, apis in config.items(): for api_name in apis: _create_and_decorate_tool(mcp, service_code, api_name)
- src/alibaba_cloud_ops_mcp_server/config.py:7-25 (registration)Configuration defining 'DescribeImages' as an ECS tool to be dynamically registered.config = { 'ecs': [ 'DescribeInstances', 'DescribeRegions', 'DescribeZones', 'DescribeAccountAttributes', 'DescribeAvailableResource', 'DescribeImages', 'DescribeSecurityGroups', 'DeleteInstances' ], 'Vpc': [ 'DescribeVpcs', 'DescribeVSwitches' ], 'rds': [ 'DescribeDBInstances' ] }
- Dynamically creates input schema for DescribeImages tool parameters from API metadata.def _create_function_schemas(service, api, api_meta): schemas = {} schemas[api] = {} parameters = api_meta.get('parameters', []) required_params = [] optional_params = [] for parameter in parameters: name = parameter.get('name') # TODO 目前忽略了带'.'的参数 if '.' in name: continue schema = parameter.get('schema', '') required = schema.get('required', False) if required: required_params.append(parameter) else: optional_params.append(parameter) def process_parameter(parameter): name = parameter.get('name') schema = parameter.get('schema', '') description = schema.get('description', '') example = schema.get('example', '') type_ = schema.get('type', '') description = f'{description} 参数类型: {type_},参数示例:{example}' required = schema.get('required', False) if service.lower() == 'ecs' and name in ECS_LIST_PARAMETERS and type_ == 'string': python_type = list else: python_type = type_map.get(type_, str) field_info = ( python_type, field( default=None, metadata={'description': description, 'required': required} ) ) return name, field_info for parameter in required_params: name, field_info = process_parameter(parameter) schemas[api][name] = field_info for parameter in optional_params: name, field_info = process_parameter(parameter) schemas[api][name] = field_info if 'RegionId' not in schemas[api]: schemas[api]['RegionId'] = ( str, field( default='cn-hangzhou', metadata={'description': '地域ID', 'required': False} ) ) return schemas
- Fetches API metadata (including schema, parameters, description) from Alibaba Cloud's meta service for 'ecs.DescribeImages'.@classmethod def get_api_meta(cls, service, api): service = service.lower() # API_META不包含ROA类型的API,需要通过POP平台的API GetProductList获取Service对应的Version # 获取POP平台API META参考文档:https://api.aliyun.com/openmeta/guide version = cls.get_service_version(service) service_standard, api_standard = cls.get_standard_service_and_api(service, api, version) if service_standard is None: raise Exception(f'InvalidServiceName: Please check the Service ({service}) you provide.') if api_standard is None: raise Exception(f'InvalidAPIName: Please check the Service ({service}) and the API ({api}) you provide.') data = cls.get_response_from_pop_api(cls.GET_API_INFO, service_standard, api_standard, version) return data, version