alicloud-compute-ecs by cinience/alicloud-skills
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-compute-ecsCategory: service
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
通过标准:命令退出码为 0 且生成 output/alicloud-compute-ecs/validate.txt 文件。
output/alicloud-compute-ecs/ 目录下。使用阿里云 OpenAPI (RPC) 配合官方 SDK 或 OpenAPI Explorer 来管理 ECS 资源。所有示例和执行优先使用 Python SDK。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
PageNumber + PageSize 或 NextToken + MaxResults 支持分页。DescribeInstances 会返回空列表;使用 DryRun 来验证权限。DescribeInstances,NextToken + MaxResults 是推荐的分页查询模式;使用返回的 NextToken 获取后续页面。DescribeInstances 请求中需要 RegionId,即使客户端已设置区域。references/api_overview.md 中找到 API 分组和确切的接口名称。scripts/ 下的脚本并将输出写入 output/alicloud-compute-ecs/。推荐使用虚拟环境(避免 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(
# 根据 AccessKey 优先级使用环境变量或共享配置文件。
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")
scripts/list_instances_all_regions.pyscripts/query_instance_usage.pyscripts/run_remote_command.pyscripts/summary_instance_specs.pyscripts/summary_instances_by_region.pyscripts/summary_instances_by_status.pyscripts/summary_instances_by_instance_type.pyscripts/summary_instances_by_vpc.pyscripts/summary_instances_by_security_group.py安装依赖(添加 CMS SDK):
python -m pip install alibabacloud_ecs20140526 alibabacloud_cms20190101 alibabacloud_tea_openapi alibabacloud_credentials
示例(最近 1 小时,5 分钟周期):
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
推荐的默认指标:
CPUUtilizationmemory_usedutilizationInternetInRate, InternetOutRateIntranetInRate, IntranetOutRate示例(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
行为:
RunShellScript 提交 RunCommand。DescribeInvocationResults 直到最终状态。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()
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")
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")
RunInstances, CreateInstance, StartInstance(s), StopInstance(s), RebootInstance(s), DeleteInstance(s)DescribeInstances, DescribeInstanceStatus, DescribeInstanceAttributeModifyInstanceSpec, ModifyPrepayInstanceSpec, DescribeResourcesModificationReplaceSystemDisk, ResetDiskCreateDisk, AttachDisk, DetachDisk, ResizeDisk, DescribeDisksCreateSnapshot, CopySnapshot, DescribeSnapshots, DeleteSnapshotCreateImage, CopyImage, DescribeImages, DeleteImage, ModifyImageAttributeCreateSecurityGroup, AuthorizeSecurityGroup, RevokeSecurityGroup, DescribeSecurityGroupAttributeCreateKeyPair, ImportKeyPair, DescribeKeyPairs, DeleteKeyPairsCreateNetworkInterface, AttachNetworkInterface, DetachNetworkInterface, DescribeNetworkInterfacesTagResources, UntagResources, ListTagResourcesDescribeInstancesFullStatus, DescribeInstanceHistoryEvents, DescribeInstanceMonitorDataDescribeInstances(支持过滤器,如 VpcId, VSwitchId, ZoneId, SecurityGroupId, InstanceIds)DescribeInstances 设置 PageSize=1 并读取 TotalCountDescribeRegions 然后遍历所有区域进行清单统计Running 状态。DescribeInvocations 和 DescribeInvocationResults 轮询结果。参见 references/command-assistant.md。
ALICLOUD_ACCESS_KEY_ID / ALICLOUD_ACCESS_KEY_SECRET / ALICLOUD_REGION_ID 区域策略:ALICLOUD_REGION_ID 是可选的默认值。如果未设置,决定最适合任务的区域;如果不明确,询问用户。~/.alibabacloud/credentials(区域仍来自环境变量)环境变量:
export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"
export ALICLOUD_REGION_ID="cn-hangzhou"
阿里云 SDK 也支持:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"
共享配置文件:
~/.alibabacloud/credentials
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk
Ecs2014-05-26如果需要保存响应或生成的工件,请将其写入:output/alicloud-compute-ecs/
资源使用查询证据示例:output/alicloud-compute-ecs/ecs-usage-<instance-id>-<window>.json
远程命令证据示例:output/alicloud-compute-ecs/runcommand-<instance-id>-<name>.json
references/api_overview.mdreferences/endpoints.mdreferences/command-assistant.mdreferences/describe-instances.mdreferences/instances.mdreferences/disks.mdreferences/snapshots.mdreferences/images.mdreferences/security-groups.mdreferences/network-interfaces.mdreferences/keypairs.mdreferences/tags.mdreferences/monitoring-events.mdreferences/sources.md每周安装数
163
仓库
GitHub 星标数
340
首次出现
12 天前
安全审计
安装于
gemini-cli162
github-copilot162
codex162
amp162
kimi-cli162
cursor162
Category: service
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/alicloud-compute-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.
PageNumber + PageSize or NextToken + MaxResults.DescribeInstances returns an empty list if the RAM user/role lacks permissions; use DryRun to validate permissions.DescribeInstances, NextToken + MaxResults is the recommended paged query pattern; use the returned NextToken to fetch subsequent pages.DescribeInstances requires in the request even if the client has a region set.references/api_overview.md.scripts/ and write outputs under output/alicloud-compute-ecs/.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")
scripts/list_instances_all_regions.pyscripts/query_instance_usage.pyscripts/run_remote_command.pyscripts/summary_instance_specs.pyscripts/summary_instances_by_region.pyscripts/summary_instances_by_status.pyscripts/summary_instances_by_instance_type.pyscripts/summary_instances_by_vpc.pyInstall 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, IntranetOutRateExample (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:
RunCommand with RunShellScript.DescribeInvocationResults until final status.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()
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")
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")
RunInstances, CreateInstance, StartInstance(s), StopInstance(s), RebootInstance(s), DeleteInstance(s)DescribeInstances, DescribeInstanceStatus, DescribeInstanceAttributeModifyInstanceSpec, ModifyPrepayInstanceSpec, DescribeInstances (supports filters such as VpcId, VSwitchId, ZoneId, SecurityGroupId, InstanceIds)DescribeInstances with PageSize=1 and read TotalCountDescribeRegions then loop all regions for inventoryRunning state.DescribeInvocations and DescribeInvocationResults.See references/command-assistant.md.
ALICLOUD_ACCESS_KEY_ID / ALICLOUD_ACCESS_KEY_SECRET / ALICLOUD_REGION_ID Region policy: ALICLOUD_REGION_ID is an optional default. If unset, decide the most reasonable region for the task; if unclear, ask the user.~/.alibabacloud/credentials (region still from env)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
Ecs2014-05-26If 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-<instance-id>-<window>.json
Remote command evidence example: output/alicloud-compute-ecs/runcommand-<instance-id>-<name>.json
references/api_overview.mdreferences/endpoints.mdreferences/command-assistant.mdreferences/describe-instances.mdreferences/instances.mdreferences/disks.mdreferences/snapshots.mdreferences/images.mdreferences/security-groups.mdWeekly Installs
163
Repository
GitHub Stars
340
First Seen
12 days ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli162
github-copilot162
codex162
amp162
kimi-cli162
cursor162
Azure Data Explorer (Kusto) 查询技能:KQL数据分析、日志遥测与时间序列处理
102,600 周安装
OWASP 安全检查技能:Web应用与REST API安全审计,涵盖OWASP Top 10漏洞
532 周安装
Zod - TypeScript Schema 验证库 | 运行时验证与静态类型推断
521 周安装
科研基金撰写指南:NSF、NIH、DOE、DARPA申请方案与AI图表生成
248 周安装
Drizzle ORM 数据库迁移指南:TypeScript 迁移优先开发工作流
534 周安装
Apple HIG 设计师:遵循苹果人机界面指南,设计原生 iOS 应用界面
528 周安装
Vercel AI SDK 使用指南 - 最新API、智能体构建与类型安全开发
530 周安装
RegionIdscripts/summary_instances_by_security_group.pyDescribeResourcesModificationReplaceSystemDisk, ResetDiskCreateDisk, AttachDisk, DetachDisk, ResizeDisk, DescribeDisksCreateSnapshot, CopySnapshot, DescribeSnapshots, DeleteSnapshotCreateImage, CopyImage, DescribeImages, DeleteImage, ModifyImageAttributeCreateSecurityGroup, AuthorizeSecurityGroup, RevokeSecurityGroup, DescribeSecurityGroupAttributeCreateKeyPair, ImportKeyPair, DescribeKeyPairs, DeleteKeyPairsCreateNetworkInterface, AttachNetworkInterface, DetachNetworkInterface, DescribeNetworkInterfacesTagResources, UntagResources, ListTagResourcesDescribeInstancesFullStatus, DescribeInstanceHistoryEvents, DescribeInstanceMonitorDatareferences/network-interfaces.mdreferences/keypairs.mdreferences/tags.mdreferences/monitoring-events.mdreferences/sources.md