适用于 Java 的 Amazon SDK 1.x 已于 2025 年 12 月 31 日终止支持。我们建议您迁移到 Amazon SDK for Java 2.x 以继续获得新功能、可用性改进和安全更新。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建服务客户端
要向发出请求 Amazon Web Services,首先要创建一个服务客户端对象。推荐的方法是使用服务客户端生成器。
每个都 Amazon Web Services 服务 有一个服务接口,其中包含服务 API 中每个操作的方法。例如,DynamoDB 的服务接口被命名为。 AmazonDynamoDBClient 每个服务接口都有对应的客户端生成器,可用于构建服务接口的实施。的客户端生成器类名 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 方法创建客户端。创建的客户端不可更改,而且对 setRegion 或 setEndpoint 的所有调用都会失败。
生成器可以使用相同配置创建多个客户端。在编写应用程序时,请注意生成器可变而且是非线程安全的。
以下代码使用生成器作为客户端实例的工厂。
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();
创建异步客户端
适用于 Java 的 Amazon SDK 为每项服务(除外)提供异步(或异步 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