すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ECS SDK for Javaの使用

最終更新日:Oct 14, 2024

このトピックでは、DescribeInstances操作を呼び出してElastic Compute Service (ECS) インスタンスに関する詳細情報を照会する例を示し、SDK V2.0 for Javaをインストールして使用する方法について説明します。

前提条件

  1. 最低限必要な権限を持つResource Access Management (RAM) ユーザーは、AccessKeyペアを使用してログオンします。 Alibaba Cloudアカウントには完全な権限があり、AccessKeyペアが侵害された場合に重大なセキュリティリスクとなるため、Alibaba Cloudアカウントの使用は推奨しません。 AccessKeyペアの作成の詳細については、「AccessKeyペアの作成」をご参照ください。

  2. RAMユーザーはECSリソースの管理を許可されています。 この例では読み取り専用アクセスが必要で、AliyunECSReadonlyAccessシステムポリシーが使用されます。 ビジネス要件に応じて権限を許可します。

    1. カスタムポリシーを作成します。

      カスタムポリシーの作成に関するガイダンスについては、「カスタムポリシーの作成」と「RAM権限付与」をご参照ください。

      ECSは、ベストプラクティスに基づいたカスタムポリシーテンプレートを提供します。 これらのポリシーテンプレートを参照して、ニーズに基づいてポリシーをすばやく確立します。 詳細については、「ECSのカスタムポリシー」をご参照ください。

    2. システムポリシーを使用します。

      ECSがサポートするシステムポリシーとその権限の詳細については、「ECSのシステムポリシー」をご参照ください。

  3. 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」をご参照ください。