View a markdown version of this page

Amazon Web Services 区域 Selection - 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 区域 Selection

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

查看区域的服务可用性

要查看某个地区是否有特定 Amazon Web Services 服务 内容可用,请在要使用的区域上使用isServiceSupported方法。

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

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

选择区域

从 1.4 版本开始 Amazon SDK for Java,您可以指定区域名称,SDK 将自动为您选择合适的终端节点。要自行选择终端节点,请参阅选择特定终端节点

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

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

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

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

使用生成器所构建的客户端不可改变,而且不能更改区域。如果您要 Amazon Web Services 区域 为同一服务使用多个客户端,则应创建多个客户端,每个区域一个。

选择特定终端节点

通过在创建 Amazon 客户端时调用withEndpointConfiguration方法,可以将每个客户端配置为使用区域内的特定终端节点

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

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

有关所有 Amazon 服务的区域及其相应终端节点的当前列表,请参阅区域和终端节点。

根据环境自动确定区域

重要

本节仅在使用客户端生成器访问 Amazon 服务时适用。 Amazon 使用客户端构造函数创建的客户端不会自动从环境中确定区域,而是使用默认 SDK 区域 (usEast1)。

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

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

要使用默认 credential/region 提供程序链从环境中确定区域,请使用客户端生成器的defaultClient方法。

AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

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

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

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

默认区域提供程序链

区域查找过程如下:

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

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

    注意

    此环境变量由 Lambda 容器设置。

  3. SDK 会检查 Amazon 共享配置文件(通常位于~/.aws/config)。如果 region 属性存在,则 SDK 会使用该属性。

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

    • 可以使用 AWS_PROFILE 环境变量或 aws.profile 系统属性,自定义 SDK 要加载的配置文件。

  4. SDK 尝试使用 Amazon EC2 实例元数据服务来确定当前正在运行的 Amazon EC2 实例的区域。

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

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