alicloud-compute-ecs
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCategory: service
类别:服务
Elastic Compute Service (ECS)
Elastic Compute Service (ECS)
Use Alibaba Cloud OpenAPI (RPC) with official SDKs or OpenAPI Explorer to manage ECS resources.
Prefer the Python SDK for all examples and execution.
使用阿里云OpenAPI(RPC)结合官方SDK或OpenAPI Explorer来管理ECS资源。
所有示例和执行优先使用Python SDK。
Prerequisites
前置条件
- Prepare AccessKey (RAM user/role with least privilege).
- Choose the correct region and endpoint (public/VPC).
- ECS OpenAPI is RPC style; prefer SDK or OpenAPI Explorer to avoid manual signing.
- 准备AccessKey(拥有最小权限的RAM用户/角色)。
- 选择正确的地域和端点(公网/VPC)。
- ECS OpenAPI为RPC风格;优先使用SDK或OpenAPI Explorer以避免手动签名。
API behavior notes (from ECS docs)
API行为说明(来自ECS文档)
- Most list/describe APIs support pagination via +
PageNumberorPageSize+NextToken.MaxResults - returns an empty list if the RAM user/role lacks permissions; use
DescribeInstancesto validate permissions.DryRun - For ,
DescribeInstances+NextTokenis the recommended paged query pattern; use the returnedMaxResultsto fetch subsequent pages.NextToken - requires
DescribeInstancesin the request even if the client has a region set.RegionId - Filters are ANDed; set only the filters you need.
- 大多数列表/查询类API支持通过+
PageNumber或PageSize+NextToken实现分页。MaxResults - 如果RAM用户/角色没有权限,会返回空列表;可使用
DescribeInstances验证权限。DryRun - 对于,推荐使用
DescribeInstances+NextToken的分页查询模式;使用返回的MaxResults获取后续页面的数据。NextToken - 即使客户端已设置地域,请求中仍需包含
DescribeInstances。RegionId - 过滤器为逻辑与关系;仅设置你需要的过滤器。
Workflow
工作流
- Confirm region, resource identifiers, and desired action.
- Find API group and exact operation name in .
references/api_overview.md - Call API with Python SDK (preferred) or OpenAPI Explorer.
- Verify results with describe/list APIs.
- If you need repeatable inventory or summaries, use and write outputs under
scripts/.output/alicloud-compute-ecs/
- 确认地域、资源标识符和所需执行的操作。
- 在中查找API分组和具体操作名称。
references/api_overview.md - 使用Python SDK(优先选择)或OpenAPI Explorer调用API。
- 通过查询/列表类API验证结果。
- 如果需要可重复的清单或汇总信息,使用目录下的脚本,并将输出写入
scripts/目录。output/alicloud-compute-ecs/
SDK priority
SDK优先级
- Python SDK (preferred)
- OpenAPI Explorer
- Other SDKs (only if Python is not feasible)
- Python SDK(优先选择)
- OpenAPI Explorer
- 其他SDK(仅在Python不可用时使用)
Python SDK quickstart (list instances)
Python SDK快速入门(列举实例)
推荐使用虚拟环境(避免 PEP 668 的系统安装限制)。
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud_ecs20140526 alibabacloud_tea_openapi alibabacloud_credentialspython
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
# Use env vars or shared config files per AccessKey priority.
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_instances(region_id: str):
client = create_client(region_id)
resp = client.describe_instances(ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=1,
page_size=50,
))
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
if __name__ == "__main__":
list_instances("cn-hangzhou")推荐使用虚拟环境(避免 PEP 668 的系统安装限制)。
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud_ecs20140526 alibabacloud_tea_openapi alibabacloud_credentialspython
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
# Use env vars or shared config files per AccessKey priority.
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_instances(region_id: str):
client = create_client(region_id)
resp = client.describe_instances(ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=1,
page_size=50,
))
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
if __name__ == "__main__":
list_instances("cn-hangzhou")Python SDK scripts (recommended for inventory)
Python SDK脚本(推荐用于清单管理)
- List all instances across regions (TSV/JSON):
scripts/list_instances_all_regions.py - Summarize instance specs across regions:
scripts/summary_instance_specs.py - Summarize instance counts by region (optional status breakdown):
scripts/summary_instances_by_region.py - Summarize instance counts by status:
scripts/summary_instances_by_status.py - Summarize instance counts by instance type:
scripts/summary_instances_by_instance_type.py - Summarize instance counts by VPC:
scripts/summary_instances_by_vpc.py - Summarize instance counts by security group:
scripts/summary_instances_by_security_group.py
- 跨地域列举所有实例(TSV/JSON格式):
scripts/list_instances_all_regions.py - 跨地域汇总实例规格:
scripts/summary_instance_specs.py - 按地域汇总实例数量(可选按状态细分):
scripts/summary_instances_by_region.py - 按状态汇总实例数量:
scripts/summary_instances_by_status.py - 按实例类型汇总实例数量:
scripts/summary_instances_by_instance_type.py - 按VPC汇总实例数量:
scripts/summary_instances_by_vpc.py - 按安全组汇总实例数量:
scripts/summary_instances_by_security_group.py
Python SDK: list instances for all regions
Python SDK:跨地域列举实例
python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_regions() -> list[str]:
client = create_client("cn-hangzhou")
resp = client.describe_regions(ecs_models.DescribeRegionsRequest())
return [r.region_id for r in resp.body.regions.region]
def list_instances_all_regions():
for region_id in list_regions():
client = create_client(region_id)
req = ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=1,
page_size=100,
)
resp = client.describe_instances(req)
print(f"== {region_id} ({resp.body.total_count}) ==")
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
if __name__ == "__main__":
list_instances_all_regions()python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_regions() -> list[str]:
client = create_client("cn-hangzhou")
resp = client.describe_regions(ecs_models.DescribeRegionsRequest())
return [r.region_id for r in resp.body.regions.region]
def list_instances_all_regions():
for region_id in list_regions():
client = create_client(region_id)
req = ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=1,
page_size=100,
)
resp = client.describe_instances(req)
print(f"== {region_id} ({resp.body.total_count}) ==")
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
if __name__ == "__main__":
list_instances_all_regions()Python SDK: paginated instance listing
Python SDK:分页列举实例
python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_instances_paged(region_id: str):
client = create_client(region_id)
page_number = 1
page_size = 100
while True:
resp = client.describe_instances(ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=page_number,
page_size=page_size,
))
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
total = resp.body.total_count
if page_number * page_size >= total:
break
page_number += 1
if __name__ == "__main__":
list_instances_paged("cn-hangzhou")python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_instances_paged(region_id: str):
client = create_client(region_id)
page_number = 1
page_size = 100
while True:
resp = client.describe_instances(ecs_models.DescribeInstancesRequest(
region_id=region_id,
page_number=page_number,
page_size=page_size,
))
for inst in resp.body.instances.instance:
print(inst.instance_id, inst.instance_name, inst.instance_type, inst.status)
total = resp.body.total_count
if page_number * page_size >= total:
break
page_number += 1
if __name__ == "__main__":
list_instances_paged("cn-hangzhou")Python SDK: list instance types and pricing inputs
Python SDK:列举实例类型和定价输入
python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_types(region_id: str, zone_id: str | None = None, instance_type_family: str | None = None):
client = create_client(region_id)
req = ecs_models.DescribeInstanceTypesRequest(
zone_id=zone_id,
instance_type_family=instance_type_family,
)
resp = client.describe_instance_types(req)
for t in resp.body.instance_types.instance_type:
print(t.instance_type_id, t.cpu_core_count, t.memory_size)
if __name__ == "__main__":
list_types("cn-hangzhou", "cn-hangzhou-k")python
from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
from alibabacloud_ecs20140526 import models as ecs_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str) -> Ecs20140526Client:
config = open_api_models.Config(
region_id=region_id,
endpoint=f"ecs.{region_id}.aliyuncs.com",
)
return Ecs20140526Client(config)
def list_types(region_id: str, zone_id: str | None = None, instance_type_family: str | None = None):
client = create_client(region_id)
req = ecs_models.DescribeInstanceTypesRequest(
zone_id=zone_id,
instance_type_family=instance_type_family,
)
resp = client.describe_instance_types(req)
for t in resp.body.instance_types.instance_type:
print(t.instance_type_id, t.cpu_core_count, t.memory_size)
if __name__ == "__main__":
list_types("cn-hangzhou", "cn-hangzhou-k")Common operation mapping
常见操作映射
- Instance lifecycle: ,
RunInstances,CreateInstance,StartInstance(s),StopInstance(s),RebootInstance(s)DeleteInstance(s) - Instance details: ,
DescribeInstances,DescribeInstanceStatusDescribeInstanceAttribute - Spec changes: ,
ModifyInstanceSpec,ModifyPrepayInstanceSpecDescribeResourcesModification - System disk changes: ,
ReplaceSystemDiskResetDisk - Data disks: ,
CreateDisk,AttachDisk,DetachDisk,ResizeDiskDescribeDisks - Snapshots: ,
CreateSnapshot,CopySnapshot,DescribeSnapshotsDeleteSnapshot - Images: ,
CreateImage,CopyImage,DescribeImages,DeleteImageModifyImageAttribute - Security groups: ,
CreateSecurityGroup,AuthorizeSecurityGroup,RevokeSecurityGroupDescribeSecurityGroupAttribute - Key pairs: ,
CreateKeyPair,ImportKeyPair,DescribeKeyPairsDeleteKeyPairs - ENI: ,
CreateNetworkInterface,AttachNetworkInterface,DetachNetworkInterfaceDescribeNetworkInterfaces - Tags: ,
TagResources,UntagResourcesListTagResources - Monitoring/events: ,
DescribeInstancesFullStatus,DescribeInstanceHistoryEventsDescribeInstanceMonitorData
- 实例生命周期:,
RunInstances,CreateInstance,StartInstance(s),StopInstance(s),RebootInstance(s)DeleteInstance(s) - 实例详情:,
DescribeInstances,DescribeInstanceStatusDescribeInstanceAttribute - 规格变更:,
ModifyInstanceSpec,ModifyPrepayInstanceSpecDescribeResourcesModification - 系统磁盘变更:,
ReplaceSystemDiskResetDisk - 数据磁盘:,
CreateDisk,AttachDisk,DetachDisk,ResizeDiskDescribeDisks - 快照:,
CreateSnapshot,CopySnapshot,DescribeSnapshotsDeleteSnapshot - 镜像:,
CreateImage,CopyImage,DescribeImages,DeleteImageModifyImageAttribute - 安全组:,
CreateSecurityGroup,AuthorizeSecurityGroup,RevokeSecurityGroupDescribeSecurityGroupAttribute - 密钥对:,
CreateKeyPair,ImportKeyPair,DescribeKeyPairsDeleteKeyPairs - 弹性网卡(ENI):,
CreateNetworkInterface,AttachNetworkInterface,DetachNetworkInterfaceDescribeNetworkInterfaces - 标签:,
TagResources,UntagResourcesListTagResources - 监控/事件:,
DescribeInstancesFullStatus,DescribeInstanceHistoryEventsDescribeInstanceMonitorData
Query patterns
查询模式
- List instances: (supports filters such as
DescribeInstances,VpcId,VSwitchId,ZoneId,SecurityGroupId)InstanceIds - Count instances: with
DescribeInstancesand readPageSize=1TotalCount - Region discovery: then loop all regions for inventory
DescribeRegions
- 列举实例:(支持
DescribeInstances、VpcId、VSwitchId、ZoneId、SecurityGroupId等过滤器)InstanceIds - 统计实例数量:使用并设置
DescribeInstances,读取PageSize=1值TotalCount - 地域发现:调用获取所有地域,然后遍历所有地域进行清单收集
DescribeRegions
Cloud Assistant (RunCommand) tips
云助手(RunCommand)技巧
- Instances must be in state.
Running - Ensure the Cloud Assistant agent is installed and online.
- Use shell for Linux, PowerShell for Windows.
- Poll results via and
DescribeInvocations.DescribeInvocationResults
See .
references/command-assistant.md- 实例必须处于状态。
Running - 确保云助手Agent已安装且在线。
- Linux系统使用Shell,Windows系统使用PowerShell。
- 通过和
DescribeInvocations轮询执行结果。DescribeInvocationResults
详见。
references/command-assistant.mdAccessKey priority (must follow, align with README)
AccessKey优先级(必须遵循,与README保持一致)
- Environment variables: /
ALICLOUD_ACCESS_KEY_ID/ALICLOUD_ACCESS_KEY_SECRETRegion policy:ALICLOUD_REGION_IDis an optional default. If unset, decide the most reasonable region for the task; if unclear, ask the user.ALICLOUD_REGION_ID - Shared config file: (region still from env)
~/.alibabacloud/credentials
- 环境变量:/
ALICLOUD_ACCESS_KEY_ID/ALICLOUD_ACCESS_KEY_SECRET地域策略:ALICLOUD_REGION_ID是可选的默认值。如果未设置,为任务选择最合理的地域;若不确定,询问用户。ALICLOUD_REGION_ID - 共享配置文件:(地域仍从环境变量获取)
~/.alibabacloud/credentials
Auth setup (README-aligned)
认证设置(与README一致)
Environment variables:
bash
export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"
export ALICLOUD_REGION_ID="cn-hangzhou"Also supported by the Alibaba Cloud SDKs:
bash
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"Shared config file:
~/.alibabacloud/credentialsini
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk环境变量:
bash
export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"
export ALICLOUD_REGION_ID="cn-hangzhou"阿里云SDK也支持以下环境变量:
bash
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"共享配置文件:
~/.alibabacloud/credentialsini
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-skAPI discovery
API发现
- Product code:
Ecs - Default API version:
2014-05-26 - Use OpenAPI metadata endpoints to list APIs and get schemas (see references).
- 产品代码:
Ecs - 默认API版本:
2014-05-26 - 使用OpenAPI元数据端点列举API并获取Schema(详见参考文档)。
Output policy
输出策略
If you need to save responses or generated artifacts, write them under:
output/alicloud-compute-ecs/如果需要保存响应或生成的文件,请写入以下目录:
output/alicloud-compute-ecs/References
参考文档
- API overview:
references/api_overview.md - Endpoints:
references/endpoints.md - Cloud Assistant:
references/command-assistant.md - DescribeInstances:
references/describe-instances.md - Instances:
references/instances.md - Disks:
references/disks.md - Snapshots:
references/snapshots.md - Images:
references/images.md - Security groups:
references/security-groups.md - Network interfaces:
references/network-interfaces.md - Key pairs:
references/keypairs.md - Tags:
references/tags.md - Monitoring/events:
references/monitoring-events.md - Sources:
references/sources.md
- API概览:
references/api_overview.md - 端点:
references/endpoints.md - 云助手:
references/command-assistant.md - DescribeInstances:
references/describe-instances.md - 实例:
references/instances.md - 磁盘:
references/disks.md - 快照:
references/snapshots.md - 镜像:
references/images.md - 安全组:
references/security-groups.md - 网络接口:
references/network-interfaces.md - 密钥对:
references/keypairs.md - 标签:
references/tags.md - 监控/事件:
references/monitoring-events.md - 来源:
references/sources.md