Tüm Ürünler
Search
Belge Merkezi

Cloud Control API:Java integration SDK

Son Güncelleme:Oct 07, 2026

Cloud Control API Java SDK, Alibaba Cloud kaynaklarınızın oluşturulması, sorgulanması, güncellenmesi ve silinmesi dahil olmak üzere tüm yaşam döngüsünü yönetmek için standartlaştırılmış arabirimler sunar. SDK, düşük seviyeli API ayrıntıları yerine iş mantığına odaklanabilmeniz için geliştirmeyi basitleştirir.

Ön koşullar

  • Cloud Control API'yi çağırmak için bir AccessKey çiftine ihtiyacınız vardır. Alibaba Cloud hesabınızın AccessKey çifti tam yetkilere sahip olduğundan, bunun yerine bir RAM kullanıcısı oluşturmanızı ve bu kullanıcının AccessKey çiftini kullanmanızı öneririz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve AccessKey oluşturma.

  • Cloud Control API'yi çağırmak için erişim kimlik bilgilerini yapılandırmanız gerekir. Yaygın bir kimlik bilgisi türü AccessKey (AK) şeklindedir. Kimlik bilgilerinin sızmasını önlemek için bunları ortam değişkenleri olarak saklayın.

    Not

    Bu konuda örnek olarak ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenleri kullanılmaktadır.

    Erişim kimlik bilgilerini sistem ortam değişkenleri olarak ayarlama

    Linux ve macOS

    export komutunu kullanma

    Önemli

    export komutuyla ayarlanan ortam değişkenleri geçicidir ve yalnızca geçerli oturum boyunca sürer. Kalıcı hale getirmek için komutu işletim sisteminizin başlangıç dosyasına ekleyin.

    • AccessKey ID'yi yapılandırın ve Enter tuşuna basın.

      # Replace <ACCESS_KEY_ID> with your AccessKey ID.
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • AccessKey Secret'ı yapılandırın ve Enter tuşuna basın.

      # Replace <ACCESS_KEY_SECRET> with your AccessKey Secret.
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • Yapılandırmayı doğrulayın.

      echo $ALIBABA_CLOUD_ACCESS_KEY_ID komutunu çalıştırın. Doğru AccessKey ID döndürülüyorsa yapılandırma başarılıdır.

    Windows

    Grafik Kullanıcı Arayüzü (GUI)

    • Adımlar

      Masaüstünüzde This PC öğesine sağ tıklayın ve Properties > Advanced system settings > Environment Variables > System variables/User variables > New seçeneklerini seçin. Aşağıdaki parametreleri yapılandırın:

      Parameter

      Example value

      AccessKey ID

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID

      • Variable value: LTAI

      AccessKey Secret

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • Variable value: yourAccessKeySecret

    • Yapılandırmayı doğrulayın.

      Start öğesini tıklayın (veya Win+R kısayolunu kullanın), Run seçeneğini belirleyin, cmd yazın ve Komut İstemi'ni açmak için OK düğmesini tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.

    CMD

    • Adımlar

      Komut İstemi'ni yönetici olarak açın ve sistem ortam değişkenleri eklemek için aşağıdaki komutları kullanın.

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      /M bayrağı, sistem düzeyinde bir ortam değişkeni ayarlar. Kullanıcı düzeyinde bir ortam değişkeni ayarlamak için bu bayrağı atlayın.

    • Yapılandırmayı doğrulayın.

      Start öğesini tıklayın (veya Win+R kısayolunu kullanın), Run seçeneğini belirleyin, cmd yazın ve Komut İstemi'ni açmak için OK düğmesini tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.

    PowerShell

    Tüm yeni oturumlarda kalıcı olan yeni ortam değişkenleri ayarlamak için PowerShell'de aşağıdaki komutları çalıştırın:

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

    Tüm kullanıcılar için ortam değişkenleri ayarlamak amacıyla (yönetici ayrıcalıkları gerektirir):

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

    Geçici ortam değişkenleri ayarlamak için (yalnızca geçerli oturum için geçerlidir):

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

    PowerShell'de Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID ve Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.

  • Cloud Control API'yi çağırmadan önce RAM kullanıcısının hedef kaynaklar için gerekli izinlere sahip olduğundan emin olun. Daha fazla bilgi için bkz. RAM kullanıcısı için izinleri yönetme.

  • Ayrıntılı kontrol için özel bir izin ilkesi oluşturabilirsiniz. Talimatlar için bkz. Özel ilke oluşturma.

    Not

    Bu konuda VPC kaynaklarının listelenmesi örnek olarak alınmıştır.

    • Hızlı yetkilendirme: Tüm Cloud Control API işlemleri için tam izinler sağlayan AliyunCloudControlAPIFullAccess ilkesini verin.

    • Ayrıntılı yetkilendirme: Yalnızca VPC kaynaklarını listeleme gibi gereken izinleri veren özel bir izin ilkesi oluşturun.

      VPC kaynaklarını listelemek için özel izin ilkesi

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

Gereksinimler

JDK sürüm 1,8 veya üzeri.

SDK bağımlılığı ekleme

  1. SDK Center adresine gidin ve Cloud Control API ürününü seçin (örneğin, kaynakları listelemek için bir API çağırmak istiyorsanız).

  2. Installation sayfasında, All Languages açılır listesinden Java seçeneğini belirleyin. Cloud Control API SDK'sının kurulum yöntemini Quick Start sekmesinde bulabilirsiniz.

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

API'yi çağırma

Bu bölümde, VPC kaynaklarını listelemek için GetResources API'sinin nasıl çağrılacağı gösterilmektedir.

İstemciyi başlatma

SDK'daki tüm Cloud Control API çağrıları bir istemci üzerinden gerçekleştirilir. İstemciyi başlatmak için bölgenize ait hizmet uç noktasını belirtin. Uç noktayı Cloud Control API Portal adresindeki Service Region bölümünde bulabilirsiniz. Hizmet uç noktaları hakkında daha fazla bilgi için bkz. Desteklenen Bölgeler. Bu örnekte istemci bir AccessKey çifti ile başlatılmaktadır. Diğer başlatma yöntemleri için bkz. Java SDK için erişim kimlik bilgilerini yönetme.

// Initialize the client.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// System.getenv() retrieves the AccessKey from environment variables.
    .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
    .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// Service endpoint
config.endpoint = "cloudcontrol.aliyuncs.com";
com.aliyun.cloudcontrol20220830.Client client = new com.aliyun.cloudcontrol20220830.Client(config);
//        Initialize the client by using the default credentials provider chain.
//        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);
Not
  • getenv() işlevi bir ortam değişkenini okur. Makinenizde ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET adlı ortam değişkenleri ayarladıysanız getenv() bu değerleri alır.

  • Kimlik bilgileri istemcisini parametresiz olarak başlattığınızda Credentials aracı varsayılan kimlik bilgisi sağlayıcı zincirini kullanır. Varsayılan kimlik bilgilerinin alma mantığı için bkz. varsayılan kimlik bilgisi sağlayıcı zinciri.

İstek yolunu tanımlama

// Request path
String requestPath = "/api/v1/providers/Aliyun/products/VPC/resources/VPC";
Not

İstek yolu formatı /api/v1/providers/{provider}/products/{product}/resources/{resourceTypeCode} şeklindedir.

  • Aşağıdaki tabloda istek yolundaki değişkenler açıklanmaktadır.


    Alan


    Açıklama


    Örnek değer


    {provider}


    Bulut sağlayıcısının adı. Yalnızca Aliyun desteklenir.


    Aliyun


    {product}


    Ürün kodu. ListProducts işlemini çağırarak elde edebilirsiniz.


    VPC


    {resourceTypeCode}


    Kaynak kodu. ListProducts işlemini çağırarak elde edebilirsiniz.


    VPC

  • Bir kaynağın üst kaynağa sahip olup olmadığını resourceType formatını kontrol ederek belirleyebilirsiniz:


    ResourceType formatı


    Açıklama


    Örnek değer


    ****


    Değer bir / içermiyorsa kaynağın üst kaynağı yoktur.


    VPC


    ****/****


    Kaynak türündeki bir / karakteri, kaynağın bir üst kaynağı olduğunu gösterir. Örneğin, ApsaraDB for Redis'in Redis örnekleri (DBInstance) ve veritabanı hesapları (DBInstance/Account) için kaynakları vardır. Bir veritabanı hesabının kaynak türü "DBInstance/Account" şeklindedir; burada "DBInstance", üst kaynağı olan Redis örneğinin kaynak türüdür.


    DBInstance/Account

    Daha fazla bilgi için bkz. Üst ve alt kaynaklar.

İstek nesnesi oluşturma

İstek nesneleri, <OperationName>Request adlı sınıfların örnekleridir. API parametrelerini istek nesnesinin özelliklerini kullanarak ayarlayın.

// Filter conditions (optional)
// java.util.Map < String, Object > filter = TeaConverter.buildMap(
//    new TeaPair("IsDefault", true), // Specifies whether the VPC is the default VPC.
//    new TeaPair("ResourceGroupId", "<YOUR_RESOURCEGROUPID>"), // The resource group ID.
//    new TeaPair("DhcpOptionsSetId", "<YOUR_DHCPOPTIONSSETID>"), // The ID of the DHCP options set.
//    new TeaPair("VpcId", "<YOUR_VPCID>"), // The VPC ID.
//    new TeaPair("VpcName", "<YOUR_VPCNAME>") // The VPC name.
// );
// Create a request object.
com.aliyun.cloudcontrol20220830.models.GetResourcesRequest getResourcesRequest = new com.aliyun.cloudcontrol20220830.models.GetResourcesRequest()
    .setRegionId("cn-hangzhou") // The region ID.
//    .setFilter(filter) // The query filter conditions.
//    .setNextToken("") // The token for the next page of results.
    .setMaxResults(2); // The number of results per page for paginated queries.

İsteği gönderme

API çağrıları, <operationName>WithOptions adlı istemci yöntemlerini kullanır; burada <operationName> camelCase biçimindeki API işlemi adıdır. Bu yöntem dört argüman alır: istek yolu, istek nesnesi, başlık parametreleri ve çalışma zamanı seçenekleri. Çalışma zamanı seçenekleri, zaman aşımları ve proxy ayarları gibi istek davranışını yapılandırır.

// Define runtime options.
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
//        // Ignore SSL certificate verification.
//        runtime.ignoreSSL = true;
//        // Proxy configuration.
//        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";
//        // Connection timeout.
//        runtime.connectTimeout = 5000;
//        // Read timeout.
//        runtime.readTimeout = 10000;
//        // Enable the automatic retry mechanism.
//        runtime.autoretry = true;
//        // Set the maximum number of retries.
//        runtime.maxAttempts = 3;
// Use headers to customize request headers, which can override defaults or add extra information.
java.util.Map < String, String > headers = new java.util.HashMap<>();
//        headers.put("x-acs-action", "GetResources"); // Set the API operation name.
// Send the request.
GetResourcesResponse getResourcesResponse = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime);

Özel durumları işleme

Java V2.0 SDK, özel durumları iki türe ayırır: TeaUnretryableException ve TeaException.

  • TeaUnretryableException: Maksimum yeniden deneme sayısına ulaşıldığında fırlatılır; genellikle ağ sorunlarından kaynaklanır.

  • TeaException: Hizmet hatalarını belirten bir özel durumdur.

Önemli

Hataları günlüğe kaydetmek, kurtarmayı yönetmek ve sistem kararlılığını sağlamak için sağlam bir özel durum işleme uygulayın.

Kod örneği

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 {
        // Initialize the client by using the default credentials provider chain. This is a more secure, keyless approach.
        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();
        // Request path
        String requestPath = "/api/v1/providers/Aliyun/products/VPC/resources/VPC";
        // Request object
        com.aliyun.cloudcontrol20220830.models.GetResourcesRequest getResourcesRequest = new com.aliyun.cloudcontrol20220830.models.GetResourcesRequest()
            .setRegionId("cn-hangzhou");
        // Runtime options
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // Custom request headers
        java.util.Map < String, String > headers = new java.util.HashMap < > ();
        try {
            // Send the request.
            GetResourcesResponse getResourcesResponse = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime);
            // Print the result.
            System.out.println(new Gson().toJson(getResourcesResponse.getBody()));
            // Get the request ID.
            System.out.println(getResourcesResponse.body.requestId);
        } catch (TeaException error) {
            // Error message
            System.out.println(error.getMessage());
            // Diagnostic URL
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (TeaUnretryableException ue) {
            ue.printStackTrace();
            // Print the error information.
            System.out.println(ue.getMessage());
            // Print the request record to locate the request information when the error occurred.
            System.out.println(ue.getLastRequest());
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // Error message
            System.out.println(error.getMessage());
            // Diagnostic URL
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

SSS

  • Bir API çağrılırken "You are not authorized to perform this operation" hatası alıyorum.

    Neden: AccessKey çiftiyle ilişkili RAM kullanıcısının gerekli izinleri yok.

    Çözüm: RAM kullanıcısına gerekli API izinlerini verin. Talimatlar için bkz. RAM kullanıcısı için izinleri yönetme.

    Örneğin, GetResources API'sini çağırırken "You are not authorized to perform this operation" hatası alırsanız özel bir izin ilkesi oluşturabilir ve ilgili izinleri RAM kullanıcısına verebilirsiniz.

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "cloudcontrol:List*",
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "vpc:DescribeVpcs",
          "Resource": "*"
        }
      ]
    }
  • Bir API çağrılırken "Cannot invoke "com.aliyun.credentials.Client.getCredential()" because "this._credential" is null" hatası alıyorum.

    Neden: AccessKey ortam değişkenleri doğru yapılandırılmamış.

    Çözüm:

    Erişim kimlik bilgilerini sistem ortam değişkenleri olarak ayarlama

    Linux ve macOS

    export komutunu kullanma

    Önemli

    export komutuyla ayarlanan ortam değişkenleri geçicidir ve yalnızca geçerli oturum boyunca sürer. Kalıcı hale getirmek için komutu işletim sisteminizin başlangıç dosyasına ekleyin.

    • AccessKey ID'yi yapılandırın ve Enter tuşuna basın.

      # Replace <ACCESS_KEY_ID> with your AccessKey ID.
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • AccessKey Secret'ı yapılandırın ve Enter tuşuna basın.

      # Replace <ACCESS_KEY_SECRET> with your AccessKey Secret.
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • Yapılandırmayı doğrulayın.

      echo $ALIBABA_CLOUD_ACCESS_KEY_ID komutunu çalıştırın. Doğru AccessKey ID döndürülüyorsa yapılandırma başarılıdır.

    Windows

    Grafik Kullanıcı Arayüzü (GUI)

    • Adımlar

      Masaüstünüzde This PC öğesine sağ tıklayın ve Properties > Advanced system settings > Environment Variables > System variables/User variables > New seçeneklerini seçin. Aşağıdaki parametreleri yapılandırın:

      Parameter

      Example value

      AccessKey ID

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID

      • Variable value: LTAI

      AccessKey Secret

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • Variable value: yourAccessKeySecret

    • Yapılandırmayı doğrulayın.

      Start öğesini tıklayın (veya Win+R kısayolunu kullanın), Run seçeneğini belirleyin, cmd yazın ve Komut İstemi'ni açmak için OK düğmesini tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.

    CMD

    • Adımlar

      Komut İstemi'ni yönetici olarak açın ve sistem ortam değişkenleri eklemek için aşağıdaki komutları kullanın.

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      /M bayrağı, sistem düzeyinde bir ortam değişkeni ayarlar. Kullanıcı düzeyinde bir ortam değişkeni ayarlamak için bu bayrağı atlayın.

    • Yapılandırmayı doğrulayın.

      Start öğesini tıklayın (veya Win+R kısayolunu kullanın), Run seçeneğini belirleyin, cmd yazın ve Komut İstemi'ni açmak için OK düğmesini tıklayın (veya Enter tuşuna basın). echo %ALIBABA_CLOUD_ACCESS_KEY_ID% ve echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET% komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.

    PowerShell

    Tüm yeni oturumlarda kalıcı olan yeni ortam değişkenleri ayarlamak için PowerShell'de aşağıdaki komutları çalıştırın:

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

    Tüm kullanıcılar için ortam değişkenleri ayarlamak amacıyla (yönetici ayrıcalıkları gerektirir):

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

    Geçici ortam değişkenleri ayarlamak için (yalnızca geçerli oturum için geçerlidir):

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

    PowerShell'de Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID ve Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET komutlarını çalıştırın. Doğru AccessKey değerleri döndürülüyorsa yapılandırma başarılıdır.