自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建服务客户端
要向发出请求 Amazon Web Services,请先创建一个服务客户端对象。推荐的方法是使用服务客户端生成器。
每个都 AWS 服务 有一个服务接口,其中包含服务中每个操作的方法API。例如,DynamoDB 的服务接口名为。AmazonDynamoDBClient每个服务接口都有对应的客户端生成器,可用于构建服务接口的实施。的客户端生成器类名 DynamoDB 为AmazonDynamoDBClientBuilder。
获取客户端生成器
要获取客户端生成器的实例,使用下例中所示的静态工厂方法 standard
。
AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();
有了构建器后,就可以在生成器中使用许多流畅的设置器来自定义客户端的属性。API例如,您可以按以下方法设置自定义区域和自定义凭证提供程序。
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();
创建异步客户端
每个服务(除外) 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 区域 选择。
创建默认服务客户端
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();
客户端生命周期
中的服务客户端SDK是线程安全的,为了获得最佳性能,应将其视为长期存在的对象。每个客户端均有各自的连接池资源。将显式关闭不再需要的客户端,以避免资源泄漏。
要显式关闭客户端,请调用 shutdown
方法。在调用 shutdown
后,会释放所有客户端资源且客户端不可用。
关闭客户端
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); ddb.shutdown(); // Client is now unusable