Todos los productos
Search
Centro de documentos

Cloud Control API:Java integration SDK

Última actualización: Sep 10, 2026

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.

    Nota

    Este tema usa como ejemplo las variables de entorno ALIBABA_CLOUD_ACCESS_KEY_ID y ALIBABA_CLOUD_ACCESS_KEY_SECRET.

    Establecer las credenciales de acceso como variables de entorno del sistema

    Linux y macOS

    Usar el comando export

    Importante

    Las variables de entorno establecidas con el comando export son temporales y solo duran durante la sesión actual. Para hacerlas persistentes, agregue el comando al archivo de inicio de su sistema operativo.

    • Configure el AccessKey ID y presione Enter.

      # Replace <ACCESS_KEY_ID> with your AccessKey ID.
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • Configure el AccessKey Secret y presione Enter.

      # Replace <ACCESS_KEY_SECRET> with your AccessKey Secret.
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • Compruebe la configuración.

      Ejecute el comando echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Si se devuelve el AccessKey ID correcto, la configuración fue exitosa.

    Windows

    GUI

    • Pasos

      En su escritorio, haga clic derecho en This PC y seleccione Properties > Advanced system settings > Environment Variables > System variables/User variables > New. Configure los siguientes parámetros:

      Parámetro

      Valor de ejemplo

      AccessKey ID

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID

      • Variable value: LTAI

      AccessKey Secret

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • Variable value: yourAccessKeySecret

    • Compruebe la configuración.

      Haga clic en Start (o use el atajo Win+R), seleccione Run, escriba cmd y haga clic en OK (o presione Enter) para abrir Command Prompt. Ejecute los comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% y echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.

    CMD

    • Pasos

      Abra Command Prompt como administrador y use los siguientes comandos para agregar variables de entorno del sistema.

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      La marca /M establece una variable de entorno a nivel de sistema. Omítala si desea establecer una variable de entorno a nivel de usuario.

    • Compruebe la configuración.

      Haga clic en Start (o use el atajo Win+R), seleccione Run, escriba cmd y haga clic en OK (o presione Enter) para abrir Command Prompt. Ejecute los comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% y echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.

    PowerShell

    Para establecer nuevas variables de entorno que persistan en todas las sesiones nuevas, ejecute los siguientes comandos en 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)

    Para establecer variables de entorno para todos los usuarios (requiere privilegios de administrador):

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

    Para establecer variables de entorno temporales (válidas solo para la sesión actual):

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

    En PowerShell, ejecute los comandos Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID y Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.

  • 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.

    Nota

    Este 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.

      Política de permisos personalizada para listar recursos de VPC

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

Requisitos

JDK versión 1.8 o posterior.

Agregar la dependencia del SDK

  1. Inicie sesión en SDK Center y seleccione el producto Cloud Control API (por ejemplo, si desea llamar a una API para listar recursos).

  2. 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);
Nota
  • 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";
Nota

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 Aliyun es 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/Account

    Para 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.

Importante

Implemente un manejo sólido de excepciones para registrar errores, gestionar la recuperación y garantizar la estabilidad del sistema.

Ejemplo de código

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);
        }
    }
}

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 AccessKey no están configuradas correctamente.

    Solución:

    Establecer las credenciales de acceso como variables de entorno del sistema

    Linux y macOS

    Usar el comando export

    Importante

    Las variables de entorno establecidas con el comando export son temporales y solo duran durante la sesión actual. Para hacerlas persistentes, agregue el comando al archivo de inicio de su sistema operativo.

    • Configure el AccessKey ID y presione Enter.

      # Replace <ACCESS_KEY_ID> with your AccessKey ID.
      export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
    • Configure el AccessKey Secret y presione Enter.

      # Replace <ACCESS_KEY_SECRET> with your AccessKey Secret.
      export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
    • Compruebe la configuración.

      Ejecute el comando echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Si se devuelve el AccessKey ID correcto, la configuración fue exitosa.

    Windows

    GUI

    • Pasos

      En su escritorio, haga clic derecho en This PC y seleccione Properties > Advanced system settings > Environment Variables > System variables/User variables > New. Configure los siguientes parámetros:

      Parámetro

      Valor de ejemplo

      AccessKey ID

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_ID

      • Variable value: LTAI

      AccessKey Secret

      • Variable name: ALIBABA_CLOUD_ACCESS_KEY_SECRET

      • Variable value: yourAccessKeySecret

    • Compruebe la configuración.

      Haga clic en Start (o use el atajo Win+R), seleccione Run, escriba cmd y haga clic en OK (o presione Enter) para abrir Command Prompt. Ejecute los comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% y echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.

    CMD

    • Pasos

      Abra Command Prompt como administrador y use los siguientes comandos para agregar variables de entorno del sistema.

      setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
      setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

      La marca /M establece una variable de entorno a nivel de sistema. Omítala si desea establecer una variable de entorno a nivel de usuario.

    • Compruebe la configuración.

      Haga clic en Start (o use el atajo Win+R), seleccione Run, escriba cmd y haga clic en OK (o presione Enter) para abrir Command Prompt. Ejecute los comandos echo %ALIBABA_CLOUD_ACCESS_KEY_ID% y echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.

    PowerShell

    Para establecer nuevas variables de entorno que persistan en todas las sesiones nuevas, ejecute los siguientes comandos en 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)

    Para establecer variables de entorno para todos los usuarios (requiere privilegios de administrador):

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

    Para establecer variables de entorno temporales (válidas solo para la sesión actual):

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

    En PowerShell, ejecute los comandos Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID y Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Si se devuelven los valores de AccessKey correctos, la configuración fue exitosa.