AWS SDK para Java
Guía del desarrollador

Creación de clientes de servicio

Para realizar solicitudes a Amazon Web Services, primero debe crear un objeto de cliente de servicio. La manera recomendada es utilizar el compilador de clientes de servicio.

Cada servicio de AWS tiene una interfaz de servicio con métodos para cada acción en la API de servicio. Por ejemplo, la interfaz de servicio de Amazon DynamoDB se llama AmazonDynamoDB. Cada interfaz de servicio cuenta con su compilador de clientes correspondiente, que puede utilizar para crear una implementación de la interfaz de servicio. La clase de compilador de clientes de DynamoDB se llama AmazonDynamoDBClientBuilder.

Obtención de un compilador de clientes

Para obtener una instancia del compilador de clientes, use el método de fábrica estático standard, tal y como se muestra en el siguiente ejemplo.

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

Una vez que tenga un compilador, puede personalizar las propiedades del cliente mediante el uso de funciones setter Fluent en la API del compilador. Por ejemplo, puede definir una región personalizada y un proveedor de credenciales personalizado, tal y como se indica a continuación.

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();

nota

Los métodos withXXX Fluent devuelven el objeto builder para que pueda encadenar fácilmente las llamadas a los métodos y para simplificar la lectura del código. Después de configurar las propiedades que desee, puede llamar al método build para crear el cliente. Una vez que se crea un cliente, este es inmutable y todas las llamadas a setRegion o setEndpoint producirán un error.

Un compilador puede crear varios clientes con la misma configuración. Cuando escriba su aplicación, debe ser consciente de que el compilador es mutable y no es seguro para subprocesos.

El código siguiente utiliza el compilador como una fábrica de instancias de cliente.

public class DynamoDBClientFactory { private final AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")); public AmazonDynamoDB createClient() { return builder.build(); } }

El compilador expone también funciones setter Fluent para ClientConfiguration" y RequestMetricCollector, y una lista personalizada de RequestHandler2.

A continuación se presenta un ejemplo completo que invalida todas las propiedades configurables.

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .withClientConfiguration(new ClientConfiguration().withRequestTimeout(5000)) .withMetricsCollector(new MyCustomMetricsCollector()) .withRequestHandlers(new MyCustomRequestHandler(), new MyOtherCustomRequestHandler) .build();

Creación de clientes asíncronos

AWS SDK for Java tiene clientes asíncronos para cada servicio (excepto para Amazon S3) y un compilador de clientes asíncronos correspondiente para cada servicio.

Para crear un cliente asíncrono de DynamoDB con el ExecutorService predeterminado

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();

Además de las opciones de configuración admitidas por el compilador de clientes asíncronos, el cliente asíncrono le permite establecer un ExecutorFactory personalizado para cambiar el ExecutorService que el cliente asíncrono utiliza. ExecutorFactory es una interfaz funcional, por lo que interopera con expresiones lambda y referencias de métodos de Java 8.

Para crear un cliente asíncrono con un ejecutor personalizado

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(() -> Executors.newFixedThreadPool(10)) .build();

Uso de DefaultClient

Los compiladores de clientes síncronos y asíncronos tienen otro método de fábrica denominado defaultClient. Este método crea un servicio de cliente con la configuración predeterminada, utilizando la cadena de proveedores predeterminada para cargar las credenciales y la región de AWS. Si las credenciales o la región no se pueden determinar a partir del entorno en el que se ejecuta la aplicación, la llamada a defaultClient produce un error. Consulte Uso de credenciales de AWS y Selección de regiones de AWS para obtener más información acerca de cómo se determinan las credenciales y la región.

Para crear un cliente de servicio predeterminado

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

Ciclo de vida del cliente

Los clientes de servicio del SDK son seguros para subprocesos y, para obtener el mejor rendimiento, deben tratarse como objetos de larga duración. Cada cliente tiene su propio recurso de grupo de conexiones. Cierre los clientes de forma explícita cuando dejen de ser necesarios para evitar que se filtren recursos.

Para cerrar un cliente de forma explícita, llame al método shutdown. Después de llamar a shutdown, todos los recursos del cliente se liberan y ya no se puede utilizar el cliente.

Para cerrar un cliente

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); ddb.shutdown(); // Client is now unusable