AgentSkillsCN

alicloud-ecs

使用 @alicloud/ecs20140526 TypeScript SDK 管理 Alibaba Cloud 弹性计算服务(ECS)。在阿里云上操作云服务器时,可使用此技能,涵盖实例生命周期(创建、启动、停止、重启、删除)、磁盘与快照、镜像、安全组、VPC 网络、EIP、ENI、SSH 密钥对、专用宿主机、自动配置、启动模板、云助手命令、标签、系统事件、诊断功能、存储容量单位,以及前缀列表等各项功能。全面覆盖 ECS 20140526 版本中的 374 个 API。

SKILL.md
--- frontmatter
name: alicloud-ecs
description: Manage Alibaba Cloud Elastic Compute Service (ECS) using the @alicloud/ecs20140526 TypeScript SDK. Use when working with cloud servers on Alibaba Cloud, including instance lifecycle (create, start, stop, reboot, delete), disks and snapshots, images, security groups, VPC networking, EIP, ENI, SSH key pairs, dedicated hosts, auto provisioning, launch templates, Cloud Assistant commands, tags, system events, diagnostics, storage capacity units, and prefix lists. Covers all 374 APIs of the ECS 20140526 version.
license: Apache-2.0
metadata:
  author: alicloud
  version: "1.0"
  sdk-package: "@alicloud/ecs20140526"
  api-version: "2014-05-26"

Alibaba Cloud ECS Skill

Manage cloud servers, disks, images, networks, security, and operations via the @alicloud/ecs20140526 TypeScript SDK.

Prerequisites

bash
npm install @alicloud/ecs20140526 @alicloud/openapi-core @darabonba/typescript
bash
export ALIBABA_CLOUD_ACCESS_KEY_ID="<your-key-id>"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<your-key-secret>"
export ALIBABA_CLOUD_REGION_ID="cn-hangzhou"

See scripts/setup_client.ts for a reusable client factory, and references/quickstart.md for full setup including regions, instance types, charge types, and pagination.

Client Initialization

typescript
import Client from '@alicloud/ecs20140526';
import { Config } from '@alicloud/openapi-core';

const client = new Client(new Config({
  accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
  accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
  regionId: 'cn-hangzhou',
  endpoint: 'ecs.cn-hangzhou.aliyuncs.com',
}));

API Overview (374 APIs in 14 Domains)

DomainAPIsKey OperationsReference
Instance71runInstances, startInstance, stopInstance, describeInstancesreferences/instance.md
Disk & Snapshot46createDisk, attachDisk, createSnapshot, createAutoSnapshotPolicyreferences/disk.md
Image23createImage, copyImage, importImage, describeImagesreferences/image.md
Security Group15createSecurityGroup, authorizeSecurityGroup, revokeSecurityGroupreferences/security-group.md
Network & EIP91createVpc, createVSwitch, allocateEipAddress, createNetworkInterfacereferences/network.md
SSH Key Pair6createKeyPair, attachKeyPair, describeKeyPairsreferences/key-pair.md
Dedicated Host15allocateDedicatedHosts, describeDedicatedHostsreferences/dedicated-host.md
Auto Provisioning20createAutoProvisioningGroup, createElasticityAssurancereferences/auto-scaling.md
Launch Template7createLaunchTemplate, describeLaunchTemplatesreferences/launch-template.md
Cloud Assistant22runCommand, describeInvocationResults, createActivationreferences/command.md
Tag & Resource18tagResources, describeRegions, describeZonesreferences/tag-resource.md
System Events20describeInstancesFullStatus, createDiagnosticReportreferences/system-event.md
Storage & Deployment16createStorageSet, createDeploymentSet, createSavingsPlanreferences/storage-capacity.md
Prefix List5createPrefixList, describePrefixListsreferences/prefix-list.md

Core Patterns

RPC-Style API

ECS uses RPC-style APIs. All parameters are flat fields in a Request object:

typescript
import * as models from '@alicloud/ecs20140526/dist/models';

const { body } = await client.describeInstances(new models.DescribeInstancesRequest({
  regionId: 'cn-hangzhou',
  instanceIds: JSON.stringify(['i-xxx1', 'i-xxx2']),
  pageSize: 10,
  pageNumber: 1,
}));

regionId is Required

Almost all ECS APIs require regionId. Always include it:

typescript
const request = new models.DescribeDisksRequest({
  regionId: 'cn-hangzhou',  // Required!
  diskIds: JSON.stringify(['d-xxx']),
});

Page-Based Pagination

Most Describe/List APIs use pageNumber + pageSize:

typescript
let pageNumber = 1;
let all: any[] = [];
while (true) {
  const { body } = await client.describeInstances(new models.DescribeInstancesRequest({
    regionId: 'cn-hangzhou', pageSize: 100, pageNumber,
  }));
  all.push(...(body.instances?.instance || []));
  if (all.length >= (body.totalCount || 0)) break;
  pageNumber++;
}

JSON-Encoded Array Parameters

Some parameters accept JSON-encoded arrays:

typescript
// instanceIds, diskIds, etc. are JSON strings
instanceIds: JSON.stringify(['i-xxx1', 'i-xxx2']),
diskIds: JSON.stringify(['d-xxx1']),

Error Handling

typescript
try {
  await client.describeInstances(request);
} catch (err: any) {
  console.error(`Code: ${err.code}, Message: ${err.message}, RequestId: ${err.data?.RequestId}`);
}

Common Workflows

1. Launch Instance

code
describeRegions → describeInstanceTypes → describeImages → createSecurityGroup → authorizeSecurityGroup → runInstances

2. Disk & Snapshot

code
createDisk → attachDisk → createSnapshot → createAutoSnapshotPolicy → applyAutoSnapshotPolicy

3. Image Management

code
createImage → copyImage → describeImages → importImage / exportImage

4. Security Group Rules

code
createSecurityGroup → authorizeSecurityGroup → authorizeSecurityGroupEgress → describeSecurityGroupAttribute

5. Instance Scaling

code
stopInstance → modifyInstanceSpec → startInstance

6. Remote Command Execution

code
describeCloudAssistantStatus → runCommand → describeInvocationResults

7. Network Interface

code
createNetworkInterface → attachNetworkInterface → assignPrivateIpAddresses

8. Key Pair Login

code
createKeyPair → runInstances (keyPairName) → attachKeyPair

9. Dedicated Host

code
describeDedicatedHostTypes → allocateDedicatedHosts → runInstances (dedicatedHostId)

10. Tag-Based Management

code
tagResources → describeInstances (tag filter) → untagResources

See references/workflows.md for detailed workflow examples with full code.

API Reference Quick Index

Load the corresponding reference file for parameter details:

  • Instance lifecycle/types/pricing: references/instance.md
  • Disk/snapshot/auto-snapshot: references/disk.md
  • Image/pipeline/share: references/image.md
  • Security group/rules: references/security-group.md
  • VPC/VSwitch/EIP/ENI/NAT/Route: references/network.md
  • SSH key pairs: references/key-pair.md
  • Dedicated hosts/clusters: references/dedicated-host.md
  • Auto provisioning/elasticity/capacity: references/auto-scaling.md
  • Launch templates: references/launch-template.md
  • Cloud Assistant commands: references/command.md
  • Tags/regions/zones/tasks: references/tag-resource.md
  • System events/diagnostics: references/system-event.md
  • Storage sets/deployment sets/savings: references/storage-capacity.md
  • Prefix lists: references/prefix-list.md

Each reference file contains per-API documentation with method signatures and parameter tables.

Code Examples

See scripts/examples.ts for ready-to-use code covering:

  • Instance CRUD and lifecycle management
  • Security group creation and rule management
  • Disk creation, attachment, and snapshot
  • Image creation and listing
  • SSH key pair management
  • Cloud Assistant remote command execution
  • Tag-based resource management
  • Region and zone queries