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.NotBu konuda örnek olarak
ALIBABA_CLOUD_ACCESS_KEY_IDveALIBABA_CLOUD_ACCESS_KEY_SECRETortam değişkenleri kullanılmaktadı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.
NotBu 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.
Gereksinimler
JDK sürüm 1,8 veya üzeri.
SDK bağımlılığı ekleme
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).
-
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);
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";
İ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ızcaAliyundesteklenir.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ı
resourceTypeformatı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/AccountDaha 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.
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
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:
AccessKeyortam değişkenleri doğru yapılandırılmamış.Çözüm: