Elastic Compute Service (ECS) SDK V2.0 for Java を使用して、すぐに開始できます。このガイドでは、SDK のインストールと、ECS インスタンスを一覧表示するための DescribeInstances 操作の呼び出しについて説明します。
完全な実行可能なサンプル はこのページの下部にあります。以下の各ステップは、そのサンプルからの抜粋です。
前提条件
開始する前に、以下を確認してください。
最小限の必要な権限を持つ RAM ユーザー。Alibaba Cloud ルートアカウントの使用は避けてください。その AccessKey ペアが侵害されると、重大なセキュリティリスクを引き起こす可能性があります。
この例では、読み取り専用アクセスが必要です。
AliyunECSReadonlyAccessシステム権限ポリシーをアタッチするか、ニーズに基づいて カスタムポリシーを作成 します。利用可能な権限については、「ECS の RAM 認可」をご参照ください。
環境変数として設定された AccessKey ペア。コードを実行する前に以下を設定してください。設定手順については、「AccessKey 環境変数の設定」をご参照ください。
環境変数 値 ALIBABA_CLOUD_ACCESS_KEY_IDご利用の AccessKey ID ALIBABA_CLOUD_ACCESS_KEY_SECRETご利用の AccessKey シークレット
SDK のインストール
この例では Apache Maven を使用します。代替のインストール方法については、SDK Center をご参照ください。
pom.xml の <dependencies> セクションに ECS SDK 依存関係を追加し、Maven プロジェクトを更新します。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>5.3.0</version>
</dependency>SDK の使用
以下のステップは、このページの下部にある 完全なサンプル に向けて構築されています。
ステップ 1: クライアントの初期化
認証情報とエンドポイントを含む Config オブジェクトを作成し、それを Client コンストラクターに渡します。
import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;
private static Client createClient() throws Exception {
Config config = new Config()
// 環境変数から認証情報を読み取ります。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// 利用可能なエンドポイントは https://api.aliyun.com/product/Ecs で確認できます。
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}SDK は、AccessKey ペア、Security Token Service (STS) トークンなど、他の認証情報タイプもサポートしています。詳細については、「アクセス認証情報の管理」をご参照ください。
ステップ 2: リクエストオブジェクトの構築
リクエストオブジェクトは {OperationName}Request という命名規則に従います。DescribeInstances の場合は、DescribeInstancesRequest を使用します。
// リクエストオブジェクトを構築し、対象リージョンを設定します。
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");パラメーターの完全なリストについては、「DescribeInstances API リファレンス」をご参照ください。
ステップ 3: オペレーションの呼び出し
リクエストと RuntimeOptions オブジェクトをクライアントメソッドに渡します。レスポンスオブジェクトは {OperationName}Response という命名規則に従います。
// タイムアウトやプロキシ設定などのランタイムパラメーターを設定します。
RuntimeOptions runtime = new RuntimeOptions();
// DescribeInstances を呼び出し、レスポンスボディを出力します。
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());タイムアウト、リトライ、プロキシ設定の構成については、「高度な設定」をご参照ください。
ステップ 4: 例外の処理
SDK は 2 種類の例外を発生させます。
| 例外 | 原因 |
|---|---|
TeaUnretryableException | 最大リトライ数を超過した後のネットワーク障害 |
TeaException | API から返されたビジネスエラー |
例外をログに記録し、モニタリングシステムに報告し、適切な場合はリトライロジックを適用してください。
} catch (TeaUnretryableException ue) {
// すべてのリトライ後のネットワークレベルの障害。
ue.printStackTrace();
System.out.println(ue.getMessage());
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// API からのビジネスエラー。
e.printStackTrace();
System.out.println(e.getCode());
System.out.println(e.getMessage()); // サポートチケット用の RequestId を含みます。
System.out.println(e.getData());
} catch (Exception e) {
e.printStackTrace();
}完全なサンプル
以下は、上記のすべてのステップを組み合わせた、完全で実行可能な例です。
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// 環境変数から認証情報を読み取ります。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// 利用可能なエンドポイントは https://api.aliyun.com/product/Ecs で確認できます。
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args) {
try {
Client client = Sample.createClient();
DescribeInstancesRequest request = new DescribeInstancesRequest()
.setRegionId("cn-hangzhou");
RuntimeOptions runtime = new RuntimeOptions();
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
} catch (TeaUnretryableException ue) {
// すべてのリトライ後のネットワークレベルの障害。
ue.printStackTrace();
System.out.println(ue.getMessage());
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// API からのビジネスエラー。
e.printStackTrace();
System.out.println(e.getCode());
System.out.println(e.getMessage());
System.out.println(e.getData());
} catch (Exception e) {
e.printStackTrace();
}
}
}次のステップ
汎用呼び出し — 生成された SDK メソッドなしで任意の ECS OpenAPI 操作を呼び出します。
V1.0 Java SDK — 以前の SDK バージョンのドキュメント。