本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为 AWS SDK for Java 2.x 外部配置服务客户端
许多配置设置可以在代码之外处理。当您在外部处理配置时,它可以应用于同一 Java 进程中的所有应用程序。大多数配置设置可以设置为环境变量、JVM 系统属性或单独的共享 AWS config
文件。共享config
文件可以维护单独的设置集(称为配置文件),以便为不同的环境或测试提供不同的配置。
大多数环境变量和共享config
文件设置都是标准化的,并且是跨 AWS SDKs 工具共享的,以支持不同编程语言和应用程序之间的一致功能。在大多数情况下,适用于 Java 的 SDK 可以使用的 JVM 系统属性会反映环境变量。
请参阅AWS SDKs 和工具参考指南,了解如何通过这些方法配置应用程序,以及有关每个 cross-sdk 设置的详细信息。要查看 SDK 可以从环境变量、JVM 系统属性或配置文件中解析的所有设置,请参阅AWS SDKs 和工具参考指南中的设置参考。
用于客户端配置的配置提供者链
SDK 会检查多个位置(或来源)以查找配置值。
-
在代码中或服务客户端本身上设置的任何显式设置均优先于其他任何设置。
-
JVM 系统属性
-
有关设置 JVM 系统属性的详细信息,请参阅《工具参考指南》AWS SDKs 和《工具参考指南》中的 “如何设置 JVM 系统属性”。
-
-
环境变量
-
有关设置环境变量的详细信息,请参阅《工具参考指南》AWS SDKs 和《工具参考指南》中的环境变量。
-
请注意,您可以为不同级别的 shell 配置环境变量:系统范围、用户范围和特定的终端会话。
-
-
共享
config
文件和credentials
文件-
有关设置这些文件的详细信息,请参阅
config
和工具参考指南中的共享AWS SDKs 和credentials
文件。
-
-
最后使用 SDK 源代码本身提供的任何默认值。
-
某些属性(例如 “区域”)没有默认值。您必须在代码、环境设置或共享
config
文件中明确指定它们。如果 SDK 无法解析所需的配置,API 请求可能会在运行时失败。
-
除了这个通用配置链之外,适用于 Java 2.x 的 SDK 还使用专门的提供者链,包括凭证提供者链和AWS 区域 提供者链。这些专门的链会添加其他提供商,这些提供商会考虑SDK的运行环境。例如,在容器或 EC2 实例中。
创建使用外部设置配置的服务客户端
您需要在应用程序中创建一个服务客户端才能与之通信 AWS 服务。服务客户是您与之建立联系的重要 AWS 服务纽带,可以处理所有复杂的沟通细节,因此您不必担心。它们会自动处理安全、错误处理和重试等重要任务,让您可以专注于构建应用程序,而不是处理复杂的技术问题。
使用该create()
方法
如果您需要的所有配置设置都来自外部来源,则可以使用简单的方法创建服务客户端:
S3Client s3Client = S3Client.create();
前面的代码片段创建了一个S3Client
实例。在创建过程中,SDK 会通过配置提供程序链查找设置。SDK 找到设置值后,即使存在链中后面的配置,也会使用该值。
例如,假设用户 AWS 区域 通过设置系统属性-Daws.region=us-west-2
来设置的 JVM 设置。如果还设置了AWS_REGION
环境变量,则其值将被忽略。
创建过程中还将使用默认区域提供商链和默认凭证提供者链。在链的某个地方,SDK 必须解析 AWS 区域 要使用的,并找到使其能够检索签名请求的凭据的设置。如果要找到这些值的 SDKs 文件,则客户端创建失败。
尽管你可以使用这个空的构建器模式来创建客户端,但是当你想在代码中添加配置时,通常会使用这种模式。
适用于 Java 的 SDK 2.x 环境变量和 JVM 系统属性
除了大多数人支持的跨软件开发工具包设置外 AWS SDKs,适用于 Java 的 SDK 2.x 还提供了以下设置。
注意
这些环境变量和 JVM 系统属性主要用于高级用例、测试或特定的部署场景。在大多数应用程序代码中,最好使用 SDK 的客户端生成器提供的编程配置选项,以获得更好的类型安全性和 IDE 支持。
容器凭证提供程序环境变量
除了参考指南中记录的标准容器凭证环境变量外,SDK 还支持:
AWS_CONTAINER_SERVICE_ENDPOINT
—使用容器凭证提供程序时,此环境变量指定容器元数据服务的终端节点。
Java 系统属性:aws.containerServiceEndpoint
默认值:http://169.254.170.2
HTTP 客户端实现环境变量
SYNC_HTTP_SERVICE_IMPL
— 明确标识 SDK 将使用的默认同步 HTTP 实现。当类路径上有多个实现或作为性能优化时,这很有用,因为实现发现需要对类路径进行扫描。
Java 系统属性:software.amazon.awssdk.http.service.impl
ASYNC_HTTP_SERVICE_IMPL
— 明确标识 SDK 将使用的默认异步 HTTP 实现。当类路径上有多个实现或作为性能优化时,这很有用,因为实现发现需要对类路径进行扫描。
Java 系统属性:software.amazon.awssdk.http.async.service.impl