AWS 区域 选择 - AWS SDK for Java

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

AWS 区域 选择

区域使您能够访问AWS实际位于特定地理区域的服务。它可以用于保证冗余,并保证您的数据和应用程序接近您和用户访问它们的位置。

检查区域中的服务可用性

看看是否有特定的AWS 服务在某个地区可用,请使用isServiceSupported方法在您要使用的区域上使用。

Region.getRegion(Regions.US_WEST_2) .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX);

请参阅区域类文档查看可以指定的区域,并使用服务的终端节点前缀进行查询。在服务接口中定义了各服务的终端节点前缀。例如,DynamoDB的终端节点前缀定义于AmazonDynamoDB.

选择区域

从 AWS SDK for Java 的 1.4 版本开始,您可指定区域名称,然后开发工具包将自动选择适当的终端节点。要自行选择终端节点,请参阅选择特定终端节点

要显式设置区域时,我们建议您使用 Regions 枚举。这是所有公开可用区域的枚举。要使用枚举结果中的一个区域创建客户端,请使用以下代码。

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

如果 Regions 枚举结果不包含要使用的某个区域,可使用代表该区域名称的字符串

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion("{region_api_default}") .build();
注意

使用生成器所构建的客户端不可改变,而且不能更改区域。如果你正在处理多个AWS 区域对于同一项服务,您应该创建多个客户端,即每个区域一个客户端。

选择特定终端节点

EACHAWS可以将客户端配置为使用特定终端节点在区域内拨打withEndpointConfiguration创建客户端时的方法。

例如,要配置Amazon S3客户端要使用欧洲(爱尔兰)区域,请使用以下代码。

AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withEndpointConfiguration(new EndpointConfiguration( "https://s3.eu-west-1.amazonaws.com", "eu-west-1")) .withCredentials(CREDENTIALS_PROVIDER) .build();

请参阅区域和终端节点获取当前区域列表及其相应终端节点的当前区域列表AWS服务。

根据环境自动确定区域

重要

此部分仅适用于使用客户端生成器访问AWS服务。AWS使用客户端构造函数创建的客户端不会根据环境自动确定区域,而是使用默认软件开发工具包区域 (useast1)。

在上面运行时Amazon EC2或 Lambda,您可能需要将客户端配置为与所运行代码使用同一个区域。由此可以将代码从其运行的环境中脱离,更轻松地将应用程序部署到多个区域以减少延迟并保证冗余。

必须使用客户端生成器,使开发工具包可自动检测代码的运行区域。

要使用默认的凭证/区域提供程序链来根据环境确定区域,请使用客户端生成器的 defaultClient 方法:

AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

这与使用 standard 再加上 build 相同。

AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .build();

如果您没有使用 withRegion 方法明确设置一个区域,开发工具包将参考默认区域提供程序链来尝试并确定要使用的区域。

默认区域提供程序链

区域查找过程如下:

  1. 通过生成器本身使用 withRegionsetRegion 明确设置的所有区域优先于其他所有区域。

  2. 系统会检查 AWS_REGION 环境变量。如果已设置该变量,将使用对应区域配置客户端。

    注意

    该环境变量通过 Lambda 容器设置。

  3. SDK 会检查AWS共享配置文件 (通常位于~/.aws/config)。如果 region 属性存在,则开发工具包会使用它。

    • AWS_CONFIG_FILE 环境变量可用于自定义共享配置文件的位置。

    • 这些区域有:AWS_PROFILE环境变量或aws.profile系统属性可用于自定义开发工具包所加载的配置文件。

  4. 开发工具包将尝试使用 Amazon EC2 实例元数据服务,为当前运行的 Amazon EC2 实例确定区域。

  5. 如果开发工具包此时仍不能确定区域,则客户端创建将失败并返回异常。

开发时AWS应用程序,常见的方法是使用共享配置文件(中介绍了使用默认凭证提供程序链)在本地开发时设置区域,并在运行时依赖默认区域提供程序链确定区域,以确定区域AWS基础设施。这可以明显简化客户端创建,并保证应用程序的便携性。