このトピックでは、DescribeInstances
操作を呼び出してElastic Compute Service (ECS) インスタンスに関する詳細情報を照会する例を示し、SDK V2.0 for Javaをインストールして使用する方法について説明します。
前提条件
最低限必要な権限を持つResource Access Management (RAM) ユーザーは、AccessKeyペアを使用してログオンします。 Alibaba Cloudアカウントには完全な権限があり、AccessKeyペアが侵害された場合に重大なセキュリティリスクとなるため、Alibaba Cloudアカウントの使用は推奨しません。 AccessKeyペアの作成の詳細については、「AccessKeyペアの作成」をご参照ください。
RAMユーザーはECSリソースの管理を許可されています。 この例では読み取り専用アクセスが必要で、AliyunECSReadonlyAccessシステムポリシーが使用されます。 ビジネス要件に応じて権限を許可します。
カスタムポリシーを作成します。
カスタムポリシーの作成に関するガイダンスについては、「カスタムポリシーの作成」と「RAM権限付与」をご参照ください。
ECSは、ベストプラクティスに基づいたカスタムポリシーテンプレートを提供します。 これらのポリシーテンプレートを参照して、ニーズに基づいてポリシーをすばやく確立します。 詳細については、「ECSのカスタムポリシー」をご参照ください。
システムポリシーを使用します。
ECSがサポートするシステムポリシーとその権限の詳細については、「ECSのシステムポリシー」をご参照ください。
AccessKeyペアは環境変数で設定されます。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
SDK のインストール
Java用SDKはさまざまな方法でインストールでき、この例ではApache Mavenを使用します。 代替方法については、 SDKセンターを使用します。
Mavenプロジェクトのpom.xml
ファイルで、<dependencies>
セクションに依存関係設定を挿入し、Mavenプロジェクトを更新します。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>5.3.0</version>
</dependency>
SDKの使用
1. クライアントの初期化
Alibaba Cloud SDKは、クライアントを初期化するために、AccessKeyペアやSTS (Security Token Service) トークンなどのさまざまなアクセス資格情報をサポートしています。 詳細については、「アクセス資格情報の管理」をご参照ください。 この例では、AccessKeyペアを使用してクライアントを初期化します。
import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// For the endpoint, refer to https://api.aliyun.com/product/Ecs
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
}
2. 要求オブジェクトを作成する
リクエストオブジェクトを作成する前に、パラメーターの詳細についてはDescribeInstancesをご参照ください。
リクエストオブジェクトの名前は、{API name} request
形式である必要があります。 たとえば、DescribeInstances
のリクエストオブジェクトはDescribeInstancesRequest
です。
// Construct the request object.
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");
3. 操作呼び出しの開始
クライアントを介してAPI操作を呼び出す場合、タイムアウトやプロキシ設定などのランタイムパラメーターを設定できます。 詳細は、「高度な設定」をご参照ください。
レスポンスオブジェクトの名前は、{API name} response
形式である必要があります。 たとえば、DescribeInstances
の応答オブジェクトはDescribeInstancesResponse
です。
// Set runtime parameters.
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeInstances API operation.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
4. 例外の処理
SDK for Javaを使用するときに発生する可能性のある例外は、TeaUnretryableExceptionとTeaExceptionの2つのタイプに分類されます。
TeaUnretryableException: このタイプの例外は、ネットワークの問題によって発生します。 再試行の最大回数に達すると、TeaUnretryableExceptionがスローされます。
TeaException: このタイプの例外は、ビジネスエラーが原因です。
例外の報告、ログの記録、再試行などの操作を実行して、例外を適切に処理することを推奨します。 これにより、システムの堅牢性と安定性を確保できます。
5. サンプルコード
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()
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// For the endpoint, refer to 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();
// Construct the request object.
DescribeInstancesRequest request = new DescribeInstancesRequest()
.setRegionId("cn-hangzhou");
// Set runtime parameters.
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeInstances API operation.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
} catch (TeaUnretryableException ue) {
// This is for demonstration only. Handle exceptions carefully and do not overlook them in production.
ue.printStackTrace();
// Print the error message.
System.out.println(ue.getMessage());
// Print the last request to check the request details when the error occurred.
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// This is for demonstration only. Handle exceptions carefully and do not overlook them in production.
e.printStackTrace();
// Print the error code.
System.out.println(e.getCode());
// Print the error message, which includes the RequestId.
System.out.println(e.getMessage());
// Print the specific error content returned by the server.
System.out.println(e.getData());
} catch (Exception e) {
// This is for demonstration only. Handle exceptions carefully and do not overlook them in production.
e.printStackTrace();
}
}
}
関連ドキュメント
上記の方法に加えて、ECS OpenAPIへのジェネリック呼び出しを行うこともできます。 詳細については、「ジェネリック呼び出し」をご参照ください。
SDK V1.0の詳細については、「V1.0 Java SDK」をご参照ください。