Check calendars, find open times, and manage Google Calendar events with confirmation before every change.
Coding
Alibaba Cloud Compute ECS
Manage and inspect Alibaba Cloud ECS resources through OpenAPI and Python SDK workflows.
What it does
Manage Alibaba Cloud ECS resources through RPC OpenAPI calls using the Python SDK or OpenAPI Explorer. List and summarize instances across regions, control instance lifecycle, and work with disks, snapshots, images, security groups, key pairs, ENIs, and tags. Included scripts query CPU, memory, and network usage or run Cloud Assistant commands, with evidence saved under the designated output directory.
When to use it
- Cross-region ECS inventory
- Instance lifecycle automation
- CPU, memory, and network usage checks
- Cloud Assistant remote command execution
The skill document
Category: service
Elastic Compute Service (ECS)
Validation
mkdir -p output/alicloud-compute-ecs
python -m py_compile skills/compute/ecs/alicloud-compute-ecs/scripts/list_instances_all_regions.py
python -m py_compile skills/compute/ecs/alicloud-compute-ecs/scripts/query_instance_usage.py
python -m py_compile skills/compute/ecs/alicloud-compute-ecs/scripts/run_remote_command.py
echo "py_compile_ok" > output/alicloud-compute-ecs/validate.txt
Pass criteria: command exits 0 and output/alicloud-compute-ecs/validate.txt is generated.
Output And Evidence
- Save list/summarize outputs under
output/alicloud-compute-ecs/. - Keep command arguments and region scope in each evidence file.
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)
Virtual environment is recommended (avoid PEP 668 system install restrictions).
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 - Query resource usage (CPU/Memory/Network) for one instance:
scripts/query_instance_usage.py - Run remote commands via Cloud Assistant (RunCommand):
scripts/run_remote_command.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: query one instance resource usage
Install dependencies (add CMS SDK):
python -m pip install alibabacloud_ecs20140526 alibabacloud_cms20190101 alibabacloud_tea_openapi alibabacloud_credentials
Example (last 1 hour, 5-minute period):
python skills/compute/ecs/alicloud-compute-ecs/scripts/query_instance_usage.py \
--instance-id i-xxxxxxxxxxxxxxxxx \
--region-id cn-shanghai \
--hours 1 \
--period 300 \
--summary-only \
--output output/alicloud-compute-ecs/ecs-usage-i-xxxxxxxxxxxxxxxxx-1h.json
Recommended default metrics:
CPUUtilizationmemory_usedutilizationInternetInRate,InternetOutRateIntranetInRate,IntranetOutRate
Python SDK: run remote command on one ECS instance
Example (ps -ef):
python skills/compute/ecs/alicloud-compute-ecs/scripts/run_remote_command.py \
--instance-id i-xxxxxxxxxxxxxxxxx \
--region-id cn-shanghai \
--command 'ps -ef' \
--output output/alicloud-compute-ecs/runcommand-i-xxxxxxxxxxxxxxxxx-ps-ef.json
Behavior:
- Submit
RunCommandwithRunShellScript. - Poll
DescribeInvocationResultsuntil final status. - Decode base64 stdout and save normalized JSON evidence.
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/
Resource usage query evidence example:
output/alicloud-compute-ecs/ecs-usage--.json
Remote command evidence example:
output/alicloud-compute-ecs/runcommand--.json
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
Questions people ask
- What credentials and region settings are required?
- Use a least-privilege RAM user or role. Credentials can come from Alibaba Cloud environment variables or `~/.alibabacloud/credentials`; requests such as `DescribeInstances` must also include `RegionId` and use the appropriate public or VPC endpoint.
- Can it inventory ECS instances across multiple regions?
- Yes. The provided workflow discovers regions with `DescribeRegions`, lists instances per region, and supports TSV/JSON output plus summaries by region, status, instance type, VPC, or security group.
- Can it execute commands and collect monitoring data from an instance?
- Yes. Included scripts query CPU, memory, and network metrics through CMS, or submit a Cloud Assistant `RunCommand`, poll for completion, decode stdout, and save normalized JSON evidence. Remote commands require a running instance with the Cloud Assistant agent online.
Related skills
Save, search, organize, and manage Get Notes content and knowledge bases through explicit commands.
Build and operate a testable learning plan with practice, spaced review, transfer checks, and durable local records.
Learn a topic through level checks, adaptive explanations, retrieval practice, and review across sessions.
Discover and trade Polymarket crypto fast markets using CEX momentum or a custom signal.
Extract email dates, links, and deadlines for review, then create or update tracked Google Calendar events.