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

Cloud Control API:Java 統合 SDK

最終更新日:Jun 18, 2026

Cloud Control API Java SDK は、Alibaba Cloud リソースの作成、クエリ、更新、削除など、完全なライフサイクルを管理するための標準化されたインターフェイスを提供します。この SDK を使用すると開発が簡素化されるため、低レベルの API の詳細ではなく、ビジネスロジックに集中できます。

前提条件

  • Cloud Control API を呼び出すには、AccessKey ペアが必要です。Alibaba Cloud アカウントの AccessKey ペアには完全な権限があるため、代わりに RAM ユーザーを作成し、その AccessKey ペアを使用することを推奨します。詳細については、「RAM ユーザーの作成」および「AccessKey の作成」をご参照ください。

  • Cloud Control API を呼び出すには、アクセス認証情報を設定する必要があります。一般的な認証情報タイプは AccessKey (AK) です。認証情報の漏洩を防ぐため、環境変数として保存してください。

    説明

    このトピックでは、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を例として使用します。

    アクセス認証情報をシステム環境変数として設定する

    Linux および macOS

    export コマンド

    重要

    export コマンドで設定された環境変数は一時的なものであり、現在のセッションでのみ有効です。永続化させるには、オペレーティングシステムの起動ファイルにコマンドを追加してください。

    • AccessKey ID を設定し、Enter キーを押します。

      # <ACCESS_KEY_ID> をご自身の AccessKey ID に置き換えてください。
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • AccessKey Secret を設定し、Enter キーを押します。

      # <ACCESS_KEY_SECRET> をご自身の AccessKey Secret に置き換えてください。
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • 設定を検証します。

      echo $ALIBABA_CLOUD_ACCESS_KEY_ID コマンドを実行します。正しい AccessKey ID が返された場合、設定は成功です。

    Windows

    GUI

    • 手順

      デスクトップで [This PC] を右クリックし、[Properties] > [Advanced system settings] > [Environment Variables] > [System variables]/[User variables] > [New] を選択します。次のパラメーターを設定します。

      パラメーター

      値の例

      AccessKey ID

      • 変数名:ALIBABA_CLOUD_ACCESS_KEY_ID

      • 変数値:LTAI****************

      AccessKey Secret

      • 変数名:ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • 変数値:yourAccessKeySecret

    • 設定を検証します。

      [Start] をクリック (または [Win]+[R] ショートカットを使用) し、[Run] を選択して cmd と入力し、[OK] をクリック (または Enter キーを押す) してコマンドプロンプトを開きます。echo %ALIBABA_CLOUD_ACCESS_KEY_ID% および echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。

    CMD

    • 手順

      管理者としてコマンドプロンプトを開き、次のコマンドを使用してシステム環境変数を追加します。

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      /M フラグは、システムレベルの環境変数を設定します。このフラグを省略すると、ユーザーレベルの環境変数が設定されます。

    • 設定を検証します。

      [Start] をクリック (または [Win]+[R] ショートカットを使用) し、[Run] を選択して cmd と入力し、[OK] をクリック (または Enter キーを押す) してコマンドプロンプトを開きます。echo %ALIBABA_CLOUD_ACCESS_KEY_ID% および echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。

    PowerShell

    すべての新しいセッションで永続的な新しい環境変数を設定するには、PowerShell で次のコマンドを実行します。

    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

    すべてのユーザーに対して環境変数を設定するには (管理者権限が必要です):

    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

    一時的な環境変数を設定するには (現在のセッションでのみ有効):

    $env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
    $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

    PowerShell で、Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID および Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。

  • Cloud Control API を呼び出す前に、RAM ユーザーが対象リソースに対して必要な権限を持っていることを確認してください。詳細については、「RAM ユーザーの権限管理」をご参照ください。

  • きめ細かい制御を行うために、カスタム権限ポリシーを作成できます。手順については、「カスタムポリシーの作成」をご参照ください。

    説明

    このトピックでは、VPC リソースのリスト表示を例として使用します。

    • 迅速な権限付与:AliyunCloudControlAPIFullAccess ポリシーを付与します。これにより、すべての Cloud Control API 操作に対する完全な権限が付与されます。

    • きめ細かい権限付与:VPC リソースのリスト表示など、必要な権限のみを付与するカスタム権限ポリシーを作成します。

      VPC リソースをリスト表示するためのカスタム権限ポリシー

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "cloudcontrol:List*",
            "Resource": "*"
          },
          {
            "Effect": "Allow",
            "Action": "vpc:DescribeVpcs",
            "Resource": "*"
          }
        ]
      }

要件

JDK バージョン 1.8 以降。

SDK の依存関係の追加

  1. SDK センター にログインし、Cloud Control API 製品を選択します (例:リソースをリスト表示する API を呼び出す場合)。

  2. [Installation] ページで、[All Languages] ドロップダウンリストから [Java] を選択します。[Quick Start] タブで Cloud Control API SDK のインストール方法を確認できます。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>cloudcontrol20220830</artifactId>
      <version>1.1.1</version>
    </dependency>

API の呼び出し

このセクションでは、GetResources API を呼び出して VPC リソースをリスト表示する方法を示します。

クライアントの初期化

SDK で Cloud Control API を呼び出すには、すべてクライアントを使用します。クライアントを初期化するには、リージョンのサービスエンドポイントを指定します。エンドポイントは、Cloud Control API ポータル の [Service Region] セクションで確認できます。サービスエンドポイントの詳細については、「」サポートされるリージョンをご参照ください。この例では、AccessKey ペアでクライアントを初期化します。他の初期化方法については、「Java SDK のアクセス認証情報の管理」をご参照ください。

// クライアントを初期化します。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// System.getenv() は環境変数から AccessKey を取得します。
    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// サービスエンドポイント
config.endpoint = "cloudcontrol.aliyuncs.com";
com.aliyun.cloudcontrol20220830.Client client = new com.aliyun.cloudcontrol20220830.Client(config);
//        デフォルトの認証情報プロバイダーチェーンを使用してクライアントを初期化します。
//        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
//        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
//                .setCredential(credentialClient);
//        config.endpoint = "cloudcontrol.aliyuncs.com";
//        com.aliyun.cloudcontrol20220830.Client client = new com.aliyun.cloudcontrol20220830.Client(config);
説明
  • getenv() 関数は環境変数を読み取ります。お使いのマシンで ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET という名前の環境変数を設定した場合、getenv() はそれらの値を取得します。

  • パラメーターなしで認証情報クライアントを初期化すると、Credentials ツールはデフォルトの認証情報プロバイダーチェーンを使用します。デフォルト認証情報の取得ロジックについては、「デフォルトの認証情報プロバイダーチェーン」をご参照ください。

リクエストパスの定義

// リクエストパス
String requestPath = "/api/v1/providers/Aliyun/products/VPC/resources/VPC";
説明

リクエストパスの形式は /api/v1/providers/{provider}/products/{product}/resources/{resourceTypeCode} です。

  • 次の表で、リクエストパスの変数について説明します。

    フィールド

    説明

    値の例

    {provider}

    クラウドプロバイダーの名前。 Aliyun のみがサポートされています。

    Aliyun

    {product}

    製品コード。 ListProducts API を呼び出して取得できます。

    VPC

    {resourceTypeCode}

    リソースタイプコード。 ListResourceTypes API を呼び出して取得できます。

    VPC

  • リソースに親リソースがあるかどうかは、その resourceType の形式を確認することで判断できます。

    ResourceType の形式

    説明

    値の例

    ****

    値に / が含まれていない場合、リソースには親リソースがありません。

    VPC

    ****/****

    リソースタイプに / が含まれている場合、そのリソースには親リソースがあることを示します。たとえば、ApsaraDB for Redis には Redis インスタンス (DBInstance) とデータベースアカウント (DBInstance/Account) のリソースがあります。データベースアカウントのリソースタイプは「DBInstance/Account」で、「DBInstance」はその親リソースである Redis インスタンスのリソースタイプです。

    DBInstance/Account

    詳細については、「親リソースと子リソース」をご参照ください。

リクエストオブジェクトの作成

リクエストオブジェクトは、<OperationName>Request という名前のクラスのインスタンスです。API パラメーターは、リクエストオブジェクトのプロパティを使用して設定します。

// フィルター条件 (オプション)
// java.util.Map < String, Object > filter = TeaConverter.buildMap(
//    new TeaPair("IsDefault", true), // VPC がデフォルトの VPC であるかどうかを指定します。
//    new TeaPair("ResourceGroupId", "<YOUR_RESOURCEGROUPID>"), // リソースグループ ID。
//    new TeaPair("DhcpOptionsSetId", "<YOUR_DHCPOPTIONSSETID>"), // DHCP オプションセットの ID。
//    new TeaPair("VpcId", "<YOUR_VPCID>"), // VPC ID。
//    new TeaPair("VpcName", "<YOUR_VPCNAME>") // VPC 名。
// );
// リクエストオブジェクトを作成します。
com.aliyun.cloudcontrol20220830.models.GetResourcesRequest getResourcesRequest = new com.aliyun.cloudcontrol20220830.models.GetResourcesRequest()
    .setRegionId("cn-hangzhou") // リージョン ID。
//    .setFilter(filter) // クエリのフィルター条件。
//    .setNextToken("") // 結果の次のページのトークン。
    .setMaxResults(2); // ページ分割クエリのページあたりの結果数。

リクエストの送信

API の呼び出しでは、<operationName>WithOptions という名前のクライアントメソッドを使用します。ここで、<operationName> はキャメルケース形式の API 操作名です。このメソッドは、リクエストパス、リクエストオブジェクト、ヘッダーパラメーター、ランタイムオプションの 4 つの引数を取ります。ランタイムオプションは、タイムアウトやプロキシ設定などのリクエスト動作を設定します。

// ランタイムオプションを定義します。
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
//        // SSL 証明書の検証を無視します。
//        runtime.ignoreSSL = true;
//        // プロキシ設定。
//        runtime.httpProxy = "http://127.0.0.1:9898";
//        runtime.httpsProxy = "http://user:password@127.0.0.1:8989";
//        runtime.noProxy = "127.0.0.1,localhost";
//        // 接続タイムアウト。
//        runtime.connectTimeout = 5000;
//        // 読み取りタイムアウト。
//        runtime.readTimeout = 10000;
//        // 自動再試行メカニズムを有効にします。
//        runtime.autoretry = true;
//        // 最大再試行回数を設定します。
//        runtime.maxAttempts = 3;
// ヘッダーを使用してリクエストヘッダーをカスタマイズします。これにより、デフォルトを上書きしたり、追加情報を加えたりできます。
java.util.Map < String, String > headers = new java.util.HashMap<>();
//        headers.put("x-acs-action", "GetResources"); // API 操作名を設定します。
// リクエストを送信します。
GetResourcesResponse getResourcesResponse = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime);

例外処理

Java V2.0 SDK は、例外を TeaUnretryableException と TeaException の 2 種類に分類します。

  • TeaUnretryableException:最大再試行回数に達した後にスローされ、通常はネットワークの問題が原因です。

  • TeaException:サービスエラーを示す例外です。

重要

エラーのログ記録、リカバリの管理、システムの安定性確保のために、堅牢な例外処理を実装してください。

コード例

package com.aliyun.sample;
import com.aliyun.cloudcontrol20220830.models.*;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.google.gson.Gson;
public class Sample {
    public static com.aliyun.cloudcontrol20220830.Client createClient() throws Exception {
        // デフォルトの認証情報プロバイダーチェーンを使用してクライアントを初期化します。これはより安全な、キーレスのアプローチです。
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
            .setCredential(credential);
        config.endpoint = "cloudcontrol.aliyuncs.com";
        return new com.aliyun.cloudcontrol20220830.Client(config);
    }
    public static void main(String[] args_) throws Exception {
        com.aliyun.cloudcontrol20220830.Client client = Sample.createClient();
        // リクエストパス
        String requestPath = "/api/v1/providers/Aliyun/products/VPC/resources/VPC";
        // リクエストオブジェクト
        com.aliyun.cloudcontrol20220830.models.GetResourcesRequest getResourcesRequest = new com.aliyun.cloudcontrol20220830.models.GetResourcesRequest()
            .setRegionId("cn-hangzhou");
        // ランタイムオプション
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // カスタムリクエストヘッダー
        java.util.Map < String, String > headers = new java.util.HashMap < > ();
        try {
            // リクエストを送信します。
            GetResourcesResponse getResourcesResponse = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime);
            // 結果を出力します。
            System.out.println(new Gson().toJson(getResourcesResponse.getBody()));
            // リクエスト ID を取得します。
            System.out.println(getResourcesResponse.body.requestId);
        } catch (TeaException error) {
            // エラーメッセージ
            System.out.println(error.getMessage());
            // 診断 URL
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (TeaUnretryableException ue) {
            ue.printStackTrace();
            // エラー情報を出力します。
            System.out.println(ue.getMessage());
            // エラー発生時のリクエスト情報を特定するために、リクエストレコードを出力します。
            System.out.println(ue.getLastRequest());
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // エラーメッセージ
            System.out.println(error.getMessage());
            // 診断 URL
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

よくある質問

  • API を呼び出すと、"You are not authorized to perform this operation" というエラーが表示されます。

    原因:AccessKey ペアに関連付けられた RAM ユーザーに必要な権限がありません。

    解決策:RAM ユーザーに必要な API 権限を付与してください。手順については、「RAM ユーザーの権限管理」をご参照ください。

    たとえば、GetResources API を呼び出す際に "You are not authorized to perform this operation" エラーが発生した場合、カスタム権限ポリシーを作成し、対応する権限を RAM ユーザーに付与できます。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "cloudcontrol:List*",
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "vpc:DescribeVpcs",
          "Resource": "*"
        }
      ]
    }
  • API を呼び出すと、"Cannot invoke "com.aliyun.credentials.Client.getCredential()" because "this._credential" is null" というエラーが表示されます。

    原因: AccessKey の環境変数が正しく設定されていません。

    解決策:

    アクセス認証情報をシステム環境変数として設定する

    Linux および macOS

    export コマンド

    重要

    export コマンドで設定された環境変数は一時的なものであり、現在のセッションでのみ有効です。永続化させるには、オペレーティングシステムの起動ファイルにコマンドを追加してください。

    • AccessKey ID を設定し、Enter キーを押します。

      # <ACCESS_KEY_ID> をご自身の AccessKey ID に置き換えてください。
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • AccessKey Secret を設定し、Enter キーを押します。

      # <ACCESS_KEY_SECRET> をご自身の AccessKey Secret に置き換えてください。
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • 設定を検証します。

      echo $ALIBABA_CLOUD_ACCESS_KEY_ID コマンドを実行します。正しい AccessKey ID が返された場合、設定は成功です。

    Windows

    GUI

    • 手順

      デスクトップで [This PC] を右クリックし、[Properties] > [Advanced system settings] > [Environment Variables] > [System variables]/[User variables] > [New] を選択します。次のパラメーターを設定します。

      パラメーター

      値の例

      AccessKey ID

      • 変数名:ALIBABA_CLOUD_ACCESS_KEY_ID

      • 変数値:LTAI****************

      AccessKey Secret

      • 変数名:ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • 変数値:yourAccessKeySecret

    • 設定を検証します。

      [Start] をクリック (または [Win]+[R] ショートカットを使用) し、[Run] を選択して cmd と入力し、[OK] をクリック (または Enter キーを押す) してコマンドプロンプトを開きます。echo %ALIBABA_CLOUD_ACCESS_KEY_ID% および echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。

    CMD

    • 手順

      管理者としてコマンドプロンプトを開き、次のコマンドを使用してシステム環境変数を追加します。

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      /M フラグは、システムレベルの環境変数を設定します。このフラグを省略すると、ユーザーレベルの環境変数が設定されます。

    • 設定を検証します。

      [Start] をクリック (または [Win]+[R] ショートカットを使用) し、[Run] を選択して cmd と入力し、[OK] をクリック (または Enter キーを押す) してコマンドプロンプトを開きます。echo %ALIBABA_CLOUD_ACCESS_KEY_ID% および echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。

    PowerShell

    すべての新しいセッションで永続的な新しい環境変数を設定するには、PowerShell で次のコマンドを実行します。

    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

    すべてのユーザーに対して環境変数を設定するには (管理者権限が必要です):

    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
    [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

    一時的な環境変数を設定するには (現在のセッションでのみ有効):

    $env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
    $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

    PowerShell で、Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID および Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET コマンドを実行します。正しい AccessKey の値が返された場合、設定は成功です。