Criar clientes de serviço - AWS SDK para Java 1.x

O AWS SDK para Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e o fim do suporte está previsto para 31 de dezembro de 2025. Recomendamos que você migre para o AWS SDK for Java 2.x para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

Criar clientes de serviço

Para fazer requisições ao Amazon Web Services, você primeiro cria um objeto do cliente de serviço. A maneira recomendada é usar o compilador de cliente do serviço.

Cada serviço da AWS service (Serviço da AWS) tem uma interface de serviço com métodos para cada ação na API de serviço. Por exemplo, a interface de serviço do DynamoDB se chama AmazonDynamoDBClient. Cada interface de serviço tem um compilador de cliente correspondente que você pode usar para construir uma implementação da interface de serviço. A classe do compilador de cliente do DynamoDB se chama AmazonDynamoDBClientBuilder.

Obter um compilador de cliente

Para obter uma instância do compilador de cliente, use o método de fábrica estático standard, conforme mostrado no exemplo a seguir.

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

Assim que tiver um compilador, será possível personalizar as propriedades do cliente usando muitos setters fluentes na API do compilador. Por exemplo, você pode definir uma região e um provedor de credenciais personalizados da maneira a seguir.

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

Os métodos withXXX fluentes retornam o objeto builder, de maneira que você possa vincular as chamadas ao método por comodidade e um código mais legível. Depois de configurar as propriedades desejadas, você poderá chamar o método build para criar o cliente. Assim que for criado, um cliente será imutável, e todas as chamadas para setRegion ou setEndpoint falharão.

Um compilador pode criar vários clientes com a mesma configuração. Quando você estiver escrevendo o aplicativo, lembre-se de que o compilador será mutável e não será thread-safe.

O código a seguir usa o compilador como uma fábrica para instâncias 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(); } }

O compilador também expõe setters fluentes para ClientConfiguration e RequestMetricCollector, e uma lista personalizada de RequestHandler2.

Este é um exemplo completo que substitui todas as propriedades configuráveis.

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

Criar clientes async

O AWS SDK para Java tem clientes assíncronos (ou async) para cada serviço (exceto para o Amazon S3) e um compilador de cliente async correspondente para cada serviço.

Para criar um cliente do DynamoDB async com o ExecutorService padrão

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

Além das opções de configuração compatíveis com o compilador de cliente síncrono (ou sync), o cliente async permite definir um ExecutorFactory personalizado para alterar o ExecutorService usado pelo cliente async. O ExecutorFactory é uma interface funcional. Dessa forma, ele interopera com expressões lambda do Java 8 e referências do método.

Para criar um cliente async com um executor personalizado

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

Usar DefaultClient

Os compiladores de cliente sync e async têm outro método de fábrica chamado defaultClient. Esse método cria um cliente de serviço com a configuração padrão usando a cadeia de fornecedores padrão para carregar credenciais e a Região da AWS. Se as credenciais ou a região não puderem ser determinadas pelo ambiente no qual o aplicativo estiver em execução, a chamada a defaultClient falhará. Consulte Trabalhar com credenciais da AWS e Seleção da Região da AWS para obter mais informações sobre como as credenciais e a região são determinadas.

Para criar um cliente de serviço padrão

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

Ciclo de vida do cliente

Os clientes de serviço no SDK são thread-safe e, tendo em vista o melhor desempenho, você deve tratá-los como objetos de longa duração. Cada cliente tem o próprio recurso do grupo de conexões. Desligue explicitamente clientes quando eles não são mais necessários para evitar vazamentos de recursos.

Para desligar explicitamente um cliente, chame o método shutdown. Depois da chamada de shutdown, todos os recursos de cliente serão lançados, e o cliente será inutilizável.

Para desligar um cliente

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