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

自2024年7月31日起, AWS SDK for Java 1.x已进入维护模式,并将于2025年12月31日end-of-support上线。我们建议您迁移到AWS SDK for Java 2.x以继续接收新功能、可用性改进和安全更新。

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

创建服务客户端

要向发出请求 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 方法创建客户端。创建的客户端不可更改,而且对 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();

创建异步客户端

每个服务(除外) 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