El SDK de Java de Cloud Control API proporciona interfaces estandarizadas para gestionar el ciclo de vida completo de sus recursos de Alibaba Cloud, lo que incluye crear, consultar, actualizar y eliminar recursos. Este SDK simplifica el desarrollo para que usted se enfoque en la lógica de negocio en lugar de los detalles de bajo nivel de la API.
Requisitos previos
Para llamar a Cloud Control API, necesita un par de AccessKey. Dado que el par de AccessKey de su cuenta de Alibaba Cloud tiene todos los permisos, se recomienda crear un usuario de RAM y usar su par de AccessKey. Para más información, consulte Create a RAM user y Create an AccessKey.
-
Debe configurar las credenciales de acceso para llamar a Cloud Control API. Un tipo común de credencial es
AccessKey (AK). Para evitar filtraciones de credenciales, almacénelas como variables de entorno.NotaEste tema usa como ejemplo las variables de entorno
ALIBABA_CLOUD_ACCESS_KEY_IDyALIBABA_CLOUD_ACCESS_KEY_SECRET. Antes de llamar a Cloud Control API, asegúrese de que el usuario de RAM tenga los permisos obligatorios para los recursos de destino. Para más información, consulte Manage permissions for a RAM user.
-
Si requiere un control más detallado, cree una política de permisos personalizada. Para ver las instrucciones, consulte Create a custom policy.
NotaEste tema toma como ejemplo la enumeración de recursos de VPC.
Autorización rápida: otorgue la política AliyunCloudControlAPIFullAccess, la cual proporciona permisos completos para todas las operaciones de Cloud Control API.
-
Autorización detallada: cree una política de permisos personalizada que otorgue únicamente los permisos necesarios, como listar recursos de VPC.
Requisitos
JDK versión 1.8 o posterior.
Agregar la dependencia del SDK
Inicie sesión en SDK Center y seleccione el producto Cloud Control API (por ejemplo, si desea llamar a una API para listar recursos).
-
En la página Installation, seleccione Java en la lista desplegable All Languages. Encontrará el método de instalación del SDK de Cloud Control API en la pestaña Quick Start.
<dependency> <groupId>com.aliyun</groupId> <artifactId>cloudcontrol20220830</artifactId> <version>1.1.1</version> </dependency>
Llamar a la API
Esta sección muestra cómo llamar a la API GetResources para listar recursos de VPC.
Inicializar el cliente
Todas las llamadas a Cloud Control API en el SDK pasan por un cliente. Para inicializarlo, especifique el endpoint del servicio correspondiente a su región. Puede encontrar el endpoint en la sección Service Region de Cloud Control API Portal. Para más información sobre los endpoints de servicio, consulte Supported Regions. Este ejemplo inicializa el cliente con un par de AccessKey. Para conocer otros métodos de inicialización, consulte Manage access credentials for the Java SDK.
// 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);
La función getenv() lee una variable de entorno. Si configuró en su máquina las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET, getenv() recupera sus valores.
Cuando inicializa el cliente de credenciales sin parámetros, la herramienta Credentials utiliza la cadena de proveedores de credenciales predeterminada. Para conocer la lógica de recuperación de las credenciales predeterminadas, consulte default credentials provider chain.
Definir la ruta de solicitud
// Request path
String requestPath = "/api/v1/providers/Aliyun/products/VPC/resources/VPC";
El formato de la ruta de solicitud es /api/v1/providers/{provider}/products/{product}/resources/{resourceTypeCode}.
-
A continuación se describen las variables de la ruta de solicitud.
Campo
Descripción
Valor de ejemplo
{provider}El nombre del proveedor de nube. Solo
Aliyunes compatible.Aliyun{product}El código del producto. Puede obtenerlo al llamar a la operación ListProducts.
VPC{resourceTypeCode}El código del recurso. Puede obtenerlo al llamar a la operación ListProducts.
VPC -
Puede determinar si un recurso tiene un recurso principal al revisar el formato de su
resourceType:Formato de ResourceType
Descripción
Valor de ejemplo
****Si el valor no contiene
/, el recurso no tiene un recurso principal.VPC****/****Un carácter
/en un tipo de recurso indica que este tiene un recurso principal. Por ejemplo, ApsaraDB for Redis tiene recursos para instancias de Redis (DBInstance) y cuentas de base de datos (DBInstance/Account). El tipo de recurso de una cuenta de base de datos es "DBInstance/Account", donde "DBInstance" es el tipo de recurso de su recurso principal, la instancia de Redis.DBInstance/AccountPara más información, consulte Parent and child resources.
Crear un objeto de solicitud
Los objetos de solicitud son instancias de clases denominadas <OperationName>Request. Establezca los parámetros de la API mediante las propiedades del objeto de solicitud.
// 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.
Enviar la solicitud
Las llamadas a la API usan métodos del cliente denominados <operationName>WithOptions, donde <operationName> es el nombre de la operación de la API en formato camelCase. Este método recibe cuatro argumentos: la ruta de solicitud, el objeto de solicitud, los parámetros de encabezado y las opciones de ejecución. Las opciones de ejecución configuran el comportamiento de la solicitud, como los tiempos de espera y la configuración del proxy.
// 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);
Manejar excepciones
El SDK de Java V2.0 clasifica las excepciones en dos tipos: TeaUnretryableException y TeaException.
TeaUnretryableException: se lanza cuando se alcanza el número máximo de reintentos, generalmente debido a problemas de red.
TeaException: excepción que indica errores del servicio.
Implemente un manejo sólido de excepciones para registrar errores, gestionar la recuperación y garantizar la estabilidad del sistema.
Ejemplo de código
Preguntas frecuentes
-
Al llamar a una API, recibo el error "You are not authorized to perform this operation".
Causa: el usuario de RAM asociado al par de AccessKey no tiene los permisos obligatorios.
Solución: otorgue al usuario de RAM los permisos de API necesarios. Para ver las instrucciones, consulte Manage permissions for a RAM user.
Por ejemplo, si recibe el error "You are not authorized to perform this operation" al llamar a la API GetResources, puede crear una política de permisos personalizada y otorgarle los permisos correspondientes al usuario de RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "cloudcontrol:List*", "Resource": "*" }, { "Effect": "Allow", "Action": "vpc:DescribeVpcs", "Resource": "*" } ] } -
Al llamar a una API, recibo el error "Cannot invoke "com.aliyun.credentials.Client.getCredential()" because "this._credential" is null".
Causa: las variables de entorno de
AccessKeyno están configuradas correctamente.Solución: