创建服务客户端 - Amazon SDK for Java 1.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

我们宣布了即将推出 end-of-support 的 Amazon SDK for Java (v1)。建议您迁移到 Amazon SDK for Java v2。有关日期、其他详细信息以及如何迁移的信息,请参阅链接的公告。

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

创建服务客户端

要向发出请求 Amazon Web Services,请先创建一个服务客户端对象。推荐的方法是使用服务客户端生成器。

每个都 Amazon Web Service 有一个服务接口,其中包含服务 API 中每个操作的方法。例如,DynamoDB 的服务接口名为 dbClient。AmazonDynamo每个服务接口都有对应的客户端生成器,可用于构建服务接口的实施。的客户端生成器类名 DynamoDB 为 AmazonDynamoDB ClientBuilder

获取客户端生成器

要获取客户端生成器的实例,使用下例中所示的静态工厂方法 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(); } }

该生成器还为ClientConfiguration和提供了流畅的设置器 RequestMetricCollector,以及一个包含 2 的自定义列表。RequestHandler

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

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

创建异步客户端

每个服务(除外) Amazon 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 的另一个工厂方法。该方法使用默认配置创建服务客户端,即,使用默认提供程序链加载凭证和 Amazon Web Services 区域。如果不能根据运行应用程序的环境确定凭证或区域,则对 defaultClient 的调用失败。有关如何确定Amazon 凭证和区域的更多信息,请参阅使用凭证和Amazon Web Services 区域 选择

创建默认服务客户端

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

客户端生命周期

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

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

关闭客户端

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