このトピックでは、Alibaba Cloud CLI、 Elastic Compute Service (ECS) API操作を呼び出すOpenAPI ExplorerまたはAlibaba Cloud SDK。 例では、CreateSnapshotが使用されています。
背景情報
API操作を呼び出す前に、APIドキュメントの関連手順を理解し、必要なリクエストパラメーターの値を取得する必要があります。 リクエストの送信後にエラーコードが返された場合は、APIドキュメントでエラーコードの説明を入手できます。
APIリクエストの作成に使用されるメソッド
- Alibaba Cloud CLIを使用してECS API操作を呼び出す例: Alibaba Cloud CLIは、コマンドラインツールが頻繁に使用されるシナリオに適用できます。 Alibaba Cloud CLIがECSインスタンスにインストールされていることを確認します。 さまざまなオペレーティングシステムにAlibaba Cloud CLIをインストールする方法の詳細については、以下のトピックを参照してください。
- OpenAPI Explorerを使用してECS API操作を呼び出す例: OpenAPI Explorerは、対話型操作インターフェイスを頻繁に使用するユーザーまたはAlibaba Cloudサービスに慣れていない開発者に適用できます。 でAPI操作をデバッグし、サンプルSDKリクエストを取得できます。 OpenAPI Explorerを使用します。 OpenAPI Explorerの詳細については、「OpenAPI Explorerの概要」をご参照ください。
- ECS SDK for Javaを使用したECS APIの呼び出しの例: ECS SDK for Javaは、SDKエンコードやDevOpsなどのシナリオに適用できます。 ECS SDK for Javaを使用するには、SDKがインストールされていることを確認します。 詳細については、「ECS SDK For Javaのインストール」をご参照ください。
Alibaba Cloud CLIを使用したECS 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 rows=Instances.Instance[]
- ECSインスタンスに接続している場合は、インスタンスメタデータからインスタンスのIDを取得できます。
- DescribeDisks操作を呼び出して、ディスクのIDを取得します。
aliyun ecs DescribeDisks -- RegionId cn-hangzhou -- InstanceId i-bp1afnc98r8k69 ****** -- output cols=DiskId rows=Disks.Disk[]
- CreateSnapshot操作を呼び出して、取得したディスクIDに基づいてスナップショットを作成します。
aliyun ecs CreateSnapshot -- DiskId d-bp19pjyf12hebp ******
次の情報が返された場合、スナップショットを作成するタスクが開始されます。{"RequestId":"16B856F6-EFFB-4397-8A8A-CB73FA ******","SnapshotId":"s-bp1afnc98r8kjh *******"}
- DescribeSnapshots操作を呼び出して、スナップショット作成の進行状況を照会します。
aliyun ecs DescribeSnapshots -- RegionId cn-hangzhou -- InstanceId i-bp1afnc98r8k69 ******
"SnapshotId"="s-bp1afnc98r8kjh ******"
と"ステータス":"達成"
の両方が返された場合、スナップショットが作成されます。
OpenAPI Explorerを使用してECS API操作を呼び出す例
- DescribeInstances操作を呼び出して、インスタンスのIDとディスクのIDを取得します。
- CreateSnapshot操作を呼び出して、取得したディスクIDに基づいてスナップショットを作成します。
- DescribeSnapshots操作を呼び出して、スナップショット作成の進行状況を照会します。
"SnapshotId"="s-bp1afnc98r8kjh ******"
と"ステータス":"達成"
の両方が返された場合、スナップショットが作成されます。
ECS SDK for Javaを使用したECS APIの呼び出し例
サンプルコードでは、次のパラメーターの値を指定する必要があります。
- <AccessKey>: AccessKey IDを入力します。 AccessKeyペアの取得方法については、「AccessKeyペアの取得」をご参照ください。
- <AccessSecret>: AccessKeyシークレットを入力します。
- <RegionId>: インスタンスのリージョンIDを入力します。 有効な値については、「リージョンとゾーン」または「DescribeRegions」をご参照ください。
- <DiskId>: ディスクのIDを入力します。 有効な値については、「DescribeDisks」をご参照ください。
com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.IAcsClientをインポートします。com.aliyuncs.ecs.mo del.v20140526.CreateSnapshotRequestをインポートします。com.aliyuncs.ecs.mo del.v20140526.CreateSnapshotResponseをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.exceptions.ServerExceptionをインポートします。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クラスCreateSnapshotExample {
private String accessKeyId = "<AccessKey>";
private String accessSecret = "<AccessSecret>";
/**
* ディスクのリージョンID
*/
プライベート文字列regionId = "<RegionId>";
/**
* スナップショットを作成するディスクのID
*/
プライベート文字列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レスポンス=client.getAcsResponse (リクエスト);
logInfo(response.getSnapshotId());
} catch (ServerException e) {
logInfo(String.format) ("Fail. Aliyunとのつながりが正しくありません。 ErrorCode: % s "、
e.getErrCode());
} catch (ClientException e) {
logInfo(String.format) ("Fail. ビジネスエラー。 ErrorCode: % s, RequestId: % s ",
e.getErrCode(), e.getRequestId());
}
}
private static void logInfo (文字列メッセージ) {
System.out.println (メッセージ);
}
public static void main(String[] args) {
新しいCreateSnapshotExample().createSnapshot();
}
}