本文以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();
    }
}