本文以CreateSnapshot為例,為您示範如何通過阿里雲CLI、OpenAPI Explorer和阿里雲SDK等開發人員工具調用ECS API。
使用阿里雲CLI調用API樣本
前提條件
本文調用API的工具為阿里雲CLI,請確保您已安裝和配置了阿里雲CLI。
操作步驟
本樣本通過阿里雲CLI調用API,完成建立快照(CreateSnapshot)的任務。調用API前,請根據API文檔瞭解使用說明,並查詢必需的請求參數。調用API報錯時,您可以在相應API文檔中擷取排查建議。
- 擷取執行個體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
- 如果您已遠端連線到ECS執行個體,可以通過執行個體中繼資料擷取執行個體ID:
- 使用DescribeDisks篩選磁碟ID:
aliyun ecs DescribeDisks --RegionId cn-hangzhou --InstanceId i-bp1afnc98r8k69XXXXXX --output cols=DiskId
- 使用CreateSnapshot根據磁碟ID建立快照:
aliyun ecs CreateSnapshot --DiskId d-bp19pjyf12hebpXXXXXX
返回以下資訊時,表示已成功發起建立任務:{"RequestId":"16B856F6-EFFB-4397-8A8A-CB73FAXXXXXX","SnapshotId":"s-bp1afnc98r8kjhXXXXXX"}
- 使用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文檔瞭解使用說明,並查詢必需的請求參數。
- 通過DescribeInstances擷取執行個體ID和磁碟ID。
- 通過CreateSnapshot根據磁碟ID建立快照。
- 使用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();
}
}