View a markdown version of this page

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

Amazon SDK for Java 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 方法创建客户端。创建的客户端不可更改,而且对 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