本文以CreateSnapshot为例,为您演示如何通过阿里云CLI、OpenAPI Explorer和阿里云SDK等开发者工具调用ECS API。

使用阿里云CLI调用API示例

前提条件

本文调用API的工具为阿里云CLI,请确保您已安装配置了阿里云CLI。

操作步骤

本示例通过阿里云CLI调用API,完成创建快照(CreateSnapshot)的任务。调用API前,请根据API文档了解使用说明,并查询必需的请求参数。调用API报错时,您可以在相应API文档中获取排查建议。

  1. 获取实例ID。
    • 如果您已远程连接到ECS实例,可以通过实例元数据获取实例ID:
      curl http://100.100.100.200/2016-01-01/meta-data/instance-id
    • 在本地计算机中,您可以通过DescribeInstances获取实例ID:
      aliyun ecs DescribeInstances --output cols=InstanceId,InstanceName
  2. 使用DescribeDisks筛选磁盘ID:
    aliyun ecs DescribeDisks --RegionId cn-hangzhou --InstanceId i-bp1afnc98r8k69XXXXXX --output cols=DiskId
  3. 使用CreateSnapshot根据磁盘ID创建快照:
    aliyun ecs CreateSnapshot --DiskId d-bp19pjyf12hebpXXXXXX
    返回以下信息时,表示已成功发起创建任务:
    {"RequestId":"16B856F6-EFFB-4397-8A8A-CB73FAXXXXXX","SnapshotId":"s-bp1afnc98r8kjhXXXXXX"}
  4. 使用DescribeSnapshots查询快照创建状态。当"SnapshotId"="s-bp1afnc98r8kjhXXXXXX""Status":"accomplished"同时出现,表示快照已成功创建:
    aliyun ecs DescribeSnapshots --RegionId cn-hangzhou --InstanceId i-bp1afnc98r8k69XXXXXX --output cols=SnapshotId,Status

使用OpenAPI Explorer调用API示例

本示例通过阿里云OpenAPI Explorer,完成创建快照(CreateSnapshot)的任务。更多有关OpenAPI Explorer的详情,请参见什么是OpenAPI Explorer调用CreateSnapshot前,请根据API文档了解使用说明,并查询必需的请求参数。

  1. 通过DescribeInstances获取实例ID和磁盘ID。
  2. 通过CreateSnapshot根据磁盘ID创建快照。
  3. 使用DescribeSnapshots查询快照创建状态。当"SnapshotId"="s-bp1afnc98r8kjhXXXXXX""Status":"accomplished"同时出现,表示快照已成功创建。

使用Java SDK调用API示例

本示例通过Java SDK,完成创建快照(CreateSnapshot)的任务。关于如何配置ECS SDK,请参见安装新版Java SDK

说明 以下SDK示例中的 <AccessKey>(您的AccessKeyId)、 <AccessSecret>(您的AccessKeySecret)、 <RegionId>(实例所在的地域ID)和 <DiskId>(磁盘ID)需要根据实际情况自行填写。更多详情,请参见创建AccessKey地域与可用区
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.ecs.model.v20140526.CreateSnapshotRequest;
import com.aliyuncs.ecs.model.v20140526.CreateSnapshotResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;

/* pom.xml
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>3.0.9</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-ecs</artifactId>
    <version>4.10.1</version>
</dependency>
*/  

public class CreateSnapshotExample {

    private String accessKeyId = "<AccessKey>";
    private String accessSecret = "<AccessSecret>";

    /**
     * 地域
     */
    private String regionId = "<RegionId>";

    /**
     * 磁盘id
     */
    private String diskId = "<DiskId>";

    public void createSnapshot() {
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessSecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CreateSnapshotRequest request = new CreateSnapshotRequest();
        request.setRegionId(regionId);
        request.setDiskId(diskId);
        try {
            CreateSnapshotResponse response = client.getAcsResponse(request);
            logInfo(response.getSnapshotId());
        } catch (ServerException e) {
            logInfo(String.format("Fail. Something with your connection with Aliyun go incorrect. ErrorCode: %s",
                e.getErrCode()));
        } catch (ClientException e) {
            logInfo(String.format("Fail. Business error. ErrorCode: %s, RequestId: %s",
                e.getErrCode(), e.getRequestId()));
        }
    }

    private static void logInfo(String message) {
        System.out.println(message);
    }

    public static void main(String[] args) {
        new CreateSnapshotExample().createSnapshot();
    }
}