创建服务客户端 - AWS SDK for Java

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建服务客户端

要提交请求至 Amazon Web Services,您首先要创建一个服务客户端对象。推荐的方法是使用服务客户端生成器。

EACHAWS 服务有一个服务接口,提供与服务 API 中各项操作对应的方法。例如,DynamoDB 的服务接口命名为AmazonDynamo数据库客户端. 每个服务接口都有对应的客户端生成器,可用于构建服务接口的实施。的客户端生成器类DynamoDB被命名为AmazonDynamoDBClientBuilder.

获取客户端生成器

要获取客户端生成器的实例,使用下例中所示的静态工厂方法 standard

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

获得生成器以后,可以使用生成器 API 中的多个常用 setter 来自定义客户端的属性。例如,您可以按以下方法设置自定义区域和自定义凭证提供程序。

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

常用的 withXXX 方法会返回 builder 对象,由此可以将方法调用组合起来,这样不仅方便而且代码更加便于阅读。在配置需要的属性后,可以调用 build 方法创建客户端。创建的客户端不可更改,而且对 setRegionsetEndpoint 的所有调用都会失败。

生成器可以使用相同配置创建多个客户端。在编写应用程序时,请注意生成器可变而且是非线程安全的。

以下代码使用生成器作为客户端实例的工厂。

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

建造者还暴露了流利的二传手ClientConfigurationRequestMetricCollector,还有一个自定义列表RequestHandler2.

以下给出将覆盖所有可配置属性的完整示例。

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

创建异步客户端

AWS SDK for Java的每个服务均有异步客户端(Amazon S3 除外),且每个服务都有相应的异步客户端生成器。

使用默认值创建异步 DynamoDB 客户端 ExecutorService

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

除了同步客户端生成器支持的配置选项外,使用异步客户端可以设置自定义的ExecutorFactory更改ExecutorService异步客户端使用的。ExecutorFactory是一个函数接口,因此它与 Java 8 lambda 表达式和方法引用互操作。

使用自定义执行程序创建异步客户端

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

使用 DefaultClient

同步和异步客户端生成器都包含名为 defaultClient 的另一个工厂方法。该方法使用默认配置创建服务客户端,即使用默认提供程序链加载凭证和AWS 区域. 如果不能根据运行应用程序的环境确定凭证或区域,则对 defaultClient 的调用失败。请参阅使用AWS凭证AWS 区域Selection有关如何确定凭证和区域的更多信息。

创建默认服务客户端

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

客户端生命周期

开发工具包中的服务客户端是线程安全的,而且为了获得最佳性能,应该将其作为永久对象。每个客户端均有各自的连接池资源。将显式关闭不再需要的客户端,以避免资源泄漏。

要显式关闭客户端,请调用 shutdown 方法。在调用 shutdown 后,会释放所有客户端资源且客户端不可用。

关闭客户端

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