Este tema describe cómo instalar y utilizar el kit de desarrollo de software (SDK) de Java V2.0. Se incluye un ejemplo que muestra cómo invocar la operación de API DescribeInstances para consultar los detalles de una o más instancias de Elastic Compute Service (ECS).
Requisitos previos
El AccessKey de una cuenta de Alibaba Cloud otorga acceso total a sus recursos, lo que representa un alto riesgo de seguridad si se filtra. Se recomienda crear un usuario de Resource Access Management (RAM) y concederle únicamente los permisos obligatorios. Posteriormente, utilice el AccessKey del usuario de RAM para invocar las operaciones de la API. Para obtener más información, consulte Create an AccessKey.
-
Ha otorgado al usuario de RAM permisos para gestionar recursos de ECS. El código de ejemplo en este tema muestra una operación de consulta. En este ejemplo se utiliza la directiva de sistema AliyunECSReadonlyAccess. Puede otorgar permisos personalizados según sea necesario.
-
Utilice directivas personalizadas.
Para obtener más información sobre cómo crear directivas personalizadas, consulte Create a custom policy y Authorization information.
ECS proporciona ejemplos de directivas personalizadas basados en mejores prácticas. Puede utilizar estos ejemplos para crear rápidamente directivas personalizadas que satisfagan las necesidades de su negocio. Para obtener más información, consulte Custom policies.
-
Utilice directivas de sistema.
Para obtener información sobre todas las directivas de sistema compatibles con ECS y sus descripciones de permisos, consulte System policies for ECS.
-
Configure el AccessKey mediante variables de entorno. Para obtener más información, consulte Configure environment variables on Linux, macOS, and Windows systems.
Instalación del SDK
Existen varias formas de instalar el SDK de Java. Este tema utiliza Apache Maven como ejemplo. Para obtener más información sobre otros métodos de instalación, consulte SDK Center.
Abra el archivo pom.xml de su proyecto Maven. Agregue la dependencia al nodo <dependencies> y actualice la configuración de Maven.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>5.3.0</version>
</dependency>
Uso del SDK
1. Inicialización del cliente
Puede utilizar varios tipos de credenciales para inicializar un cliente, como un AccessKey o un token de Security Token Service (STS). Para obtener más información sobre otros tipos de credenciales, consulte Manage access credentials. Este ejemplo muestra cómo inicializar un cliente mediante un AccessKey.
import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// For the endpoint, see https://api.alibabacloud.com/product/Ecs
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
}
2. Creación de un objeto de solicitud para la operación de API
Antes de crear el objeto de solicitud, consulte API documentation correspondiente a la operación para obtener la información de los parámetros.
Convención de nombres para objetos de solicitud: {APIName}Request. Por ejemplo, el objeto de solicitud para la operación de API DescribeInstances es DescribeInstancesRequest.
// Create a request object.
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");
3. Realización de la llamada
Al utilizar el cliente para invocar una operación de OpenAPI, puede establecer parámetros de tiempo de ejecución, como configuraciones de tiempo de espera y proxy. Para obtener más información, consulte Advanced configurations.
Convención de nombres para objetos de respuesta: {APIName}Response. Por ejemplo, el objeto de respuesta para la operación de API DescribeInstances es DescribeInstancesResponse.
// Set runtime parameters.
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeInstances API operation.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
4. Manejo de excepciones
El SDK de Java ofrece una clasificación detallada de excepciones. Estas se dividen principalmente en dos tipos: TeaUnretryableException y TeaException.
TeaUnretryableException: Esta excepción suele lanzarse debido a problemas de red después de alcanzar el número máximo de reintentos.
TeaException: Esta excepción corresponde principalmente a errores de negocio.
Debe tomar las medidas adecuadas para manejar las excepciones, como propagarlas, registrar logs e intentar la recuperación, a fin de garantizar la solidez y estabilidad del sistema.
5. Ejemplo completo
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Required. Make sure that the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// For the endpoint, see https://api.alibabacloud.com/product/Ecs
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args) {
try {
Client client = Sample.createClient();
// Create a request object.
DescribeInstancesRequest request = new DescribeInstancesRequest()
.setRegionId("cn-hangzhou");
// Set runtime parameters.
RuntimeOptions runtime = new RuntimeOptions();
// Call the DescribeInstances API operation.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
} catch (TeaUnretryableException ue) {
// This is for printing and demonstration purposes only. Handle exceptions with care. Do not ignore exceptions in your projects.
ue.printStackTrace();
// Print the error message.
System.out.println(ue.getMessage());
// Print the request record to query the request information when the error occurred.
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// This is for printing and demonstration purposes only. Handle exceptions with care. Do not ignore exceptions in your projects.
e.printStackTrace();
// Print the error code.
System.out.println(e.getCode());
// Print the error message, which includes the RequestId.
System.out.println(e.getMessage());
// Print the specific error content returned by the server.
System.out.println(e.getData());
} catch (Exception e) {
// This is for printing and demonstration purposes only. Handle exceptions with care. Do not ignore exceptions in your projects.
e.printStackTrace();
}
}
}
Ejemplos por escenario
Más información
Además de los métodos anteriores, puede utilizar llamadas generalizadas para invocar operaciones de OpenAPI de ECS. Para obtener más información, consulte Generalized calls.
Si utiliza el SDK V1.0 y desea más información, consulte Java SDK V1.0.