本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS 区域
AWS 区域 使服务客户端 AWS 服务 能够访问实际位于特定地理区域的内容。
显式配置 AWS 区域
要显式设置区域,建议您使用在 Region
要使用此类中的枚举区域创建客户端,请使用客户端生成器的 region
方法。
Ec2Client ec2 = Ec2Client.builder() .region(Region.US_WEST_2) .build();
如果您想要使用的区域不是 Region
类中的枚举之一,则可以使用静态 of
方法创建一个新区域。借助此方法,您可以访问新区域而无需升级 SDK。
Region newRegion = Region.of("us-east-42"); Ec2Client ec2 = Ec2Client.builder() .region(newRegion) .build();
注意
使用构建器构建客户端后,它是不可变的,并且 AWS 区域 无法更改。如果您需要 AWS 区域 为同一服务使用多个客户端,则应创建多个客户端,每个区域一个。
让 SDK 根据环境自动确定区域
当您的代码在 Amazon EC2 或上运行时 AWS Lambda,您可能需要将客户端配置为使用与运行代码相同的 AWS 区域 客户端。这样可以将您的代码与其运行的环境分离,并且可以更轻松地将应用程序部署到多个 AWS 区域 以降低延迟或冗余。
要使用默认的凭证/区域提供程序链来根据环境确定区域,请使用客户端生成器的 create
方法:
Ec2Client ec2 = Ec2Client.create();
如果您未使用该region
方法明确设置,SDK 会咨询默认区域提供商链以确定要使用的区域。 AWS 区域
了解默认区域提供程序链
SDK 采用以下步骤来查找 AWS 区域 :
-
通过生成器本身使用
region
明确设置的所有区域优先于任何其他区域。 -
系统会检查
AWS_REGION
环境变量。如果已设置该变量,将使用对应区域配置客户端。注意
Lambda 容器设置此环境变量。
-
SDK 会检查 AWS 共享配置文件和共享凭据文件(通常位于
~/.aws/config
和~/.aws/credentials
)。如果该region
属性存在,SDK 就会使用它。-
如果 SDK 在两个文件中找到相同配置文件(包括配置文件)的
region
default
属性,则 SDK 将使用共享凭据文件中的值。 -
AWS_CONFIG_FILE
环境变量可用于自定义共享配置文件的位置。 -
可以使用
AWS_PROFILE
环境变量或aws.profile
系统属性来指定 SDK 加载的配置文件。
-
-
SDK 尝试使用 Amazon EC2 实例元数据服务 (IMDS) 来确定当前正在运行的 Amazon EC2 实例的区域。
-
为了提高安全性,您应禁用 SDK 尝试使用 IMDS 版本 1。您可以使用与本安全获取IAM角色证书节中描述的相同的设置来禁用版本 1。
-
-
如果 SDK 此时仍不能确定区域,客户端创建将失败并返回异常。
开发 AWS 应用程序时,一种常见的方法是使用共享配置文件(如凭据检索顺序所述)来设置用于本地开发的区域,并依靠默认的区域提供程序链来确定应用程序在 AWS 基础设施上运行时的区域。这可以明显简化客户端创建,并保证应用程序的便携性。
查看区域的服务可用性
要查看某个区域中是否有特定 AWS 服务 内容可用,请在服务客户端上使用serviceMetadata
和region
方法。
DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);
有关 AWS 区域 您可以指定的内容,请参阅 Region 类文档,并使用服务的终端节点前缀进行查询。
选择特定端点
在某些情况下(例如在服务的预览功能正式发布之前进行测试),您可能需要在区域中指定特定端点。在这些情况下,可以通过调用 endpointOverride
方法配置服务客户端。
例如,要将 Amazon EC2 客户端配置为使用带有特定终端节点的欧洲(爱尔兰)区域,请使用以下代码。
Ec2Client ec2 = Ec2Client.builder() .region(Region.EU_WEST_1) .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com")) .build();
有关所有 AWS 服务的区域及其相应终端节点的当前列表,请参阅区域和终端节点。