

# 管理 AWS 区域中的 AWS STS
<a name="id_credentials_temp_enable-regions"></a>

区域端点是 AWS Web 服务在特定区域内入口点的 URL。AWS 建议使用区域 AWS Security Token Service (AWS STS) 端点而不是全局端点，以减少延迟、建立冗余以及提高会话令牌的有效性。尽管全球（旧版）AWS STS 端点 `https://sts.amazonaws.com` 高度可用，但它托管在单个 AWS 区域美国东部（弗吉尼亚州北部），并且与其他端点一样，它不提供到其他区域中端点的自动故障转移。
+ **减少延迟** - 通过向在地理位置离您较近的服务和应用程序的端点发出 AWS STS 调用，可以缩短访问 AWS STS 服务时的响应时间并减少延迟。
+ **建立冗余** – 您可以将工作负载内故障的影响，限制在影响控制范围可预测的少数组件范围内。使用区域 AWS STS 端点可以确保组件的范围与会话令牌的范围保持一致。有关此可靠性支柱的更多信息，请参阅在《AWS Well-Architected Framework》中的 [使用故障隔离来保护工作负载](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/use-fault-isolation-to-protect-your-workload.html)**。
+ **提高会话令牌有效性** – 来自区域 AWS STS 端点的会话令牌在所有 AWS 区域 中都有效。来自全球 STS 端点的会话令牌仅在默认启用的 AWS 区域 中有效。如果打算为您的账户启用新的区域，您可以使用来自区域 AWS STS 端点的会话令牌。如果选择使用全球端点，您必须更改全球端点的 AWS STS 会话令牌的区域兼容性。这样做可以确保令牌在所有 AWS 区域 中都有效。

有关 AWS STS 区域及其端点的列表，请参阅 [AWS STS 区域和端点](id_credentials_temp_region-endpoints.md)。

**注意**  
AWS 已对[默认启用](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)的区域中的 AWS Security Token Service (AWS STS) 全局端点 (`https://sts.amazonaws.com`) 进行了更改，以增强其恢复能力和性能。发往全局端点的 AWS STS 请求将自动在与您的工作负载相同的 AWS 区域中处理。这些更改不会部署到选择加入的区域。我们建议您使用适当的 AWS STS 区域端点。有关更多信息，请参阅 [AWS STS 全局端点更改](id_credentials_temp_region-endpoints.md#reference_sts_global_endpoint_changes)。

**Topics**
+ [在 AWS 区域 中激活和停用 AWS STS](#sts-regions-activate-deactivate)
+ [编写代码以使用 AWS STS 区域](#id_credentials_temp_enable-regions_writing_code)
+ [管理全球端点会话令牌](#sts-regions-manage-tokens)

## 在 AWS 区域 中激活和停用 AWS STS
<a name="sts-regions-activate-deactivate"></a>

在为区域激活 AWS STS 端点时，AWS STS 可能会向您的账户中发出 AWS STS 请求的用户和角色颁发临时凭证。然后，可以在默认启用或手动启用的任何区域中使用这些凭证。对于默认启用的区域，您必须在生成临时凭证的账户中激活该区域 AWS STS 端点。在发出请求时，用户是登录到同一账户还是不同账户并不重要。当使用手动启用的区域为另一个 AWS 账户 中的角色请求临时凭证时，目标账户（包含该角色的账户）必须为该区域启用 AWS STS 操作。此举可确保临时安全凭证能够正确生成。

例如，假设账户 A 中的用户要向 [AWS STS 区域端点](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_region-endpoints.html) `https://sts.ap-southeast-3.amazonaws.com` 发送 `sts:AssumeRole` API 请求。该请求旨在为账户 B 中名为 `Developer` 的角色获取临时凭证。由于该请求旨在为账户 B 中的实体创建凭证，因此，账户 B 必须激活 `ap-southeast-3` 区域。账户 A（或任何其他账户）中的用户可以调用 `ap-southeast-3` AWS STS 端点，以便为账户 B 请求凭证，而无论是否在其账户中激活了该区域。欲了解更多信息，请参阅[在您的账户中启用或禁用 AWS 区域](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)。

**注意**  
活动区域适用于该账户中使用临时凭证的每个用户。要控制哪些 IAM 用户或角色可以访问区域，请在权限策略中使用 `aws:RequestedRegion` 条件键。

**在默认启用的区域中激活或停用 AWS STS（控制台）**

1. 以根用户或有权执行 IAM 管理任务的用户身份登录。

1. 打开 [IAM 控制台](https://console.aws.amazon.com/iam/home?#home)，然后在导航窗格中选择 [https://console.aws.amazon.com/iam/home?#account_settings](https://console.aws.amazon.com/iam/home?#account_settings)（账户设置）。

1. 在 **Security Token Service (STS)** 部分的 **Endpoints**（端点）中，找到要配置的区域，然后在 **STS status**（STS 状态）列中选择 **Active**（活动）或 **Inactive**（非活动）。

1. 在打开的对话框中，选择 **Activate**（激活）或 **Deactivate**（停用）。

对于必须启用的区域，当您启用相关区域时，我们会自动激活 AWS STS。启用区域后，AWS STS 对于该区域将始终处于活动状态，您无法将其停用。要了解如何启用默认禁用的区域，请参阅《AWS Account Management 参考指南》**中的[指定您的账户可以使用的 AWS 区域](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)。

## 编写代码以使用 AWS STS 区域
<a name="id_credentials_temp_enable-regions_writing_code"></a>

在激活区域后，您可以将 AWS STS API 调用定向到该区域。以下 Java 代码段说明了如何配置 `AWSSecurityTokenService` 对象，以向欧洲地区（米兰）（eu-south-1）区域发出请求。

```
EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-south-1.amazonaws.com", "eu-south-1");
AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(credentials)
.withEndpointConfiguration(regionEndpointConfig)
.build();
```

AWS STS 建议您调用区域端点。要了解如何手动启用的区域，请参阅《AWS Account Management Reference Guide》**中的 [Specify which AWS 区域 your account can use](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)。

在该示例中，第一行将名为 `regionEndpointConfig` 的 `EndpointConfiguration` 对象实例化，并将端点的 URL 和 AWS 区域 作为参数传递。

要了解如何使用 AWS SDK 的环境变量设置 AWS STS 区域端点，请参阅 *AWS SDK 和工具参考指南*中的 [AWS STS 区域化端点](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sts-regionalized-endpoints.html)。

有关所有其他的语言和编程环境组合，请参阅[相关开发工具包的文档](https://aws.amazon.com/tools/)。

## 管理全球端点会话令牌
<a name="sts-regions-manage-tokens"></a>

默认情况下，为所有 AWS 服务 中的操作启用了大多数 AWS 区域。将自动激活这些区域以用于 AWS STS。必须手动启用某些区域，例如，亚太区域（香港）。要了解启用和禁用 AWS 区域 的更多信息，请参阅《AWS Account Management Reference Guide》**中的 [Specify which AWS 区域 your account can use](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)。在启用这些 AWS 区域时，将自动激活这些区域以用于 AWS STS。您无法为禁用的区域激活 AWS STS 端点。在所有 AWS 区域 都有效的会话令牌包含的字符数比在默认启用的区域中有效的令牌多。更改该设置可能会影响临时存储令牌的现有系统。

您可以使用 AWS 管理控制台、AWS CLI 或 AWS API 更改该设置。

**更改全球端点的会话令牌的区域兼容性（控制台）**

1. 以根用户或有权执行 IAM 管理任务的用户身份登录。要更改会话令牌的兼容性，您必须具有允许 `iam:SetSecurityTokenServicePreferences` 操作的策略。

1. 打开 [IAM 控制台](https://console.aws.amazon.com/iam/home?#home)。在导航窗格中，选择 **Account settings**（账户设置）。

1. 在 **Security Token Service (STS)** 部分的 **Session Tokens from the STS endpoints**（来自 STS 端点的会话令牌）。**全球端点** 表示 `Valid only in AWS 区域 enabled by default`。选择 **Change (更改)**。

1. 在**更改区域兼容性**对话框中，选择**全部 AWS 区域**。然后选择 **Save changes （保存更改)**。
**注意**  
在所有 AWS 区域 都有效的会话令牌包含的字符数比在默认启用的区域中有效的令牌多。更改该设置可能会影响临时存储令牌的现有系统。

**更改全球端点的会话令牌的区域兼容性 (AWS CLI)**  
设置会话令牌版本。版本 1 令牌仅在默认启用的 AWS 区域 中有效。这些令牌不适用于手动启用的区域，例如，亚太地区（香港）。版本 2 令牌在所有区域中都有效。不过，版本 2 令牌包含更多字符，可能会影响临时存储令牌的系统。
+ [https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html](https://docs.aws.amazon.com/cli/latest/reference/iam/set-security-token-service-preferences.html)

**更改全球端点的会话令牌的区域兼容性 (AWS API)**  
设置会话令牌版本。版本 1 令牌仅在默认启用的 AWS 区域 中有效。这些令牌不适用于手动启用的区域，例如，亚太地区（香港）。版本 2 令牌在所有区域中都有效。不过，版本 2 令牌包含更多字符，可能会影响临时存储令牌的系统。
+ [https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetSecurityTokenServicePreferences.html) 