在代码中配置服务客户端 AWS SDK for Java 2.x - AWS SDK for Java 2.x

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

在代码中配置服务客户端 AWS SDK for Java 2.x

作为外部配置服务客户端的替代方案,或者除了在外部配置服务客户端之外,您还可以在代码中以编程方式对其进行配置。

通过在代码中配置服务客户端,您可以精细地控制许多可用的选项。可以在外部设置的大多数配置也可以在代码中进行设置。

代码中的基本配置

例如,以下代码段在代码中 AWS 区域 将 EU_SOUTH_2 Amazon S3 服务客户端的设置为:

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();

前面的片段显示了静态工厂方法。builder()builder() 方法返回一个允许您自定义服务客户端的 builder 对象。fluent 的 setter 方法返回builder对象(在本例中为S3ClientBuilder实例),因此为了方便起见和代码更具可读性,您可以链接方法调用。在配置了所需属性后,可以调用 build() 方法创建客户端。

代码中的高级配置

以下代码段显示了其他配置选项:

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();

在前面的片段中,您可以看到配置服务客户端的几个入口点:

不是创建单独的对象然后将它们传递给服务客户端方法,而是 AWS SDK for Java 2.x 提供了接受 lambda 表达式来内联构建这些对象的方法。生成器上的配置方法命名相同,但具有不同的签名。例如:

前面所示的使用这种方法的 S3 客户端的配置可以在一个代码块中完成:

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();

代码中无法使用配置选项

由于以下设置会影响 SDK 中的基本初始化过程,因此您只能在外部而不是在代码中设置以下配置设置:

文件位置设置

这些设置控制共享配置和凭据文件的位置,在 SDK 加载后无法以编程方式对其进行覆盖:

  • AWS_CONFIG_FILE(环境变量)/aws.configFile(JVM 系统属性)

  • AWS_SHARED_CREDENALS_FILE(环境变量)/aws。 sharedCredentialsFile(JVM 系统属性)

这些设置必须在 SDK 加载配置文件之前进行设置,因为它们决定了 SDK 在哪里查找配置。SDK 初始化后,更改这些值将无效。

禁用实例元数据服务

  • AWS_EC2_METADATA_DISABLED(环境变量)/a w s.disableec2Metadata(JVM 系统属性)

此设置控制 SDK 是否尝试使用 EC2 实例元数据服务。SDK 初始化后,就无法以编程方式更改此设置。

配置文件选择

  • AWS_PROFILE(环境变量)/aws.profile(JVM 系统属性)

此设置告诉 SDK 要从共享配置和凭据文件加载哪个配置文件。加载后,更改此值将无效。

容器凭证路径

  • AWS_CONTAINER_凭证_相对_URI

  • AWS_CONTAINER_凭证_完整的 URI

  • AWS_CONTAINER_授权_令牌

  • AWS_CONTAINER_授权_令牌_文件

您可以使用这些环境变量告诉 SDK 如何从容器服务获取凭证。在服务客户端初始化期间建立凭证提供程序链后,您无法更改这些设置。

默认 HTTP 实现选择

  • SYNC_HTTP_SERVICE_IMPL(环境变量)/software.amazon.awssdk.http.service.impl(JVM 系统属性)

  • ASYNC_HTTP_SERVICE_IMPL(环境变量)/software.amazon.awssdk.http.async.service.impl(JVM 系统属性)

这些全局设置决定了 SDK 对所有服务客户端使用哪个 HTTP 客户端实现,除非在单个服务客户端的代码中被覆盖。您必须在 SDK 初始化其 HTTP 客户端之前进行设置,之后不能进行更改。