alicloud-compute-ecs
53
总安装量
52
周安装量
#7424
全站排名
安装命令
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-compute-ecs
Agent 安装分布
qoder
51
gemini-cli
51
github-copilot
51
codex
51
kimi-cli
51
cursor
51
Skill 文档
Category: service
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.
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.
API behavior notes (from ECS docs)
- Most list/describe APIs support pagination via
PageNumber+PageSizeorNextToken+MaxResults. DescribeInstancesreturns an empty list if the RAM user/role lacks permissions; useDryRunto validate permissions.- For
DescribeInstances,NextToken+MaxResultsis the recommended paged query pattern; use the returnedNextTokento fetch subsequent pages. DescribeInstancesrequiresRegionIdin the request even if the client has a region set.- Filters are ANDed; set only the filters you need.
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
scripts/and write outputs underoutput/alicloud-compute-ecs/.
SDK priority
- Python SDK (preferred)
- OpenAPI Explorer
- Other SDKs (only if Python is not feasible)
Python SDK quickstart (list instances)
æ¨è使ç¨èæç¯å¢ï¼é¿å PEP 668 çç³»ç»å®è£ éå¶ï¼ã
python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud_ecs20140526 alibabacloud_tea_openapi alibabacloud_credentials
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)
- 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
Python SDK: list instances for all regions
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
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
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,DescribeInstanceStatus,DescribeInstanceAttribute - Spec changes:
ModifyInstanceSpec,ModifyPrepayInstanceSpec,DescribeResourcesModification - System disk changes:
ReplaceSystemDisk,ResetDisk - Data disks:
CreateDisk,AttachDisk,DetachDisk,ResizeDisk,DescribeDisks - Snapshots:
CreateSnapshot,CopySnapshot,DescribeSnapshots,DeleteSnapshot - Images:
CreateImage,CopyImage,DescribeImages,DeleteImage,ModifyImageAttribute - Security groups:
CreateSecurityGroup,AuthorizeSecurityGroup,RevokeSecurityGroup,DescribeSecurityGroupAttribute - Key pairs:
CreateKeyPair,ImportKeyPair,DescribeKeyPairs,DeleteKeyPairs - ENI:
CreateNetworkInterface,AttachNetworkInterface,DetachNetworkInterface,DescribeNetworkInterfaces - Tags:
TagResources,UntagResources,ListTagResources - Monitoring/events:
DescribeInstancesFullStatus,DescribeInstanceHistoryEvents,DescribeInstanceMonitorData
Query patterns
- List instances:
DescribeInstances(supports filters such asVpcId,VSwitchId,ZoneId,SecurityGroupId,InstanceIds) - Count instances:
DescribeInstanceswithPageSize=1and readTotalCount - Region discovery:
DescribeRegionsthen loop all regions for inventory
Cloud Assistant (RunCommand) tips
- Instances must be in
Runningstate. - Ensure the Cloud Assistant agent is installed and online.
- Use shell for Linux, PowerShell for Windows.
- Poll results via
DescribeInvocationsandDescribeInvocationResults.
See references/command-assistant.md.
AccessKey priority (must follow, align with README)
- Environment variables:
ALICLOUD_ACCESS_KEY_ID/ALICLOUD_ACCESS_KEY_SECRET/ALICLOUD_REGION_IDRegion policy:ALICLOUD_REGION_IDis an optional default. If unset, decide the most reasonable region for the task; if unclear, ask the user. - Shared config file:
~/.alibabacloud/credentials(region still from env)
Auth setup (README-aligned)
Environment variables:
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:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"
Shared config file:
~/.alibabacloud/credentials
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk
API discovery
- Product code:
Ecs - Default API version:
2014-05-26 - Use OpenAPI metadata endpoints to list APIs and get schemas (see references).
Output policy
If you need to save responses or generated artifacts, write them under:
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