

# 请求临时安全凭证
<a name="id_credentials_temp_request"></a>

要请求临时安全凭证，您可以在 AWS API 中使用 AWS Security Token Service (AWS STS) 操作。这些操作包括创建受信任用户，并为其提供可以控制 AWS 资源访问的临时安全凭证。有关 AWS STS 的更多信息，请参阅 [IAM 临时安全凭证](id_credentials_temp.md)。要了解在担任角色以请求临时安全凭证时使用的各种方法，请参阅[担任角色的方法](id_roles_manage-assume.md)。

要调用 API 操作，您可以使用其中的一个 [AWS SDK](https://aws.amazon.com/tools/)。这些开发工具包适用于各种不同的编程语言和环境，包括 Java、.NET、Python、Ruby、Android 和 iOS。这些开发工具包负责处理各种任务，如以加密方式对您的请求进行签名、在必要时重试请求以及处理错误响应。还可使用 AWS STS 查询 API（在 [AWS Security Token Service API 参考](https://docs.aws.amazon.com/STS/latest/APIReference/)中介绍）。最后，两个命令行工具支持 AWS STS 命令：[AWS Command Line Interface](https://aws.amazon.com/documentation/cli)和[AWS Tools for Windows PowerShell](https://aws.amazon.com/documentation/powershell)。

AWS STS API 操作使用临时安全凭证（包括访问密钥对和会话令牌）创建新会话。访问密钥对由访问密钥 ID 和私有密钥组成。用户 (或用户所运行的应用程序) 可使用这些凭证访问您的资源。您可以使用 AWS STS API 操作以编程方式创建角色会话和传递会话策略及会话标签。生成的会话的权限是角色的基于身份的策略与会话策略的交集。有关会话策略的更多信息，请参阅[会话策略](access_policies.md#policies_session)。有关会话标签的更多信息，请参阅 [在 AWS STS 中传递会话标签](id_session-tags.md)。

**注意**  
AWS STS API 操作返回的会话令牌大小不固定。我们强烈建议不要假设最大大小。典型的令牌大小小于 4096 字节，但可能会发生变化。

## 通过 AWS 区域使用 AWS STS
<a name="using_sts_regions"></a>

您可以将 AWS STS API 调用发送到全球终端节点或某个区域终端节点。如果您选择更靠近您的终端节点，则可减少延迟并改善 API 调用的性能。如果您不再能与原始终端节点进行通信，也可选择将调用定向到替代的区域终端节点。如果您使用某种 AWS SDK，请先使用该开发工具包的方法指定一个区域，然后再进行 API 调用。如果您正在手动构建 HTTP API 请求，则必须自行将请求定向到正确的终端节点。有关更多信息，请参阅[*区域和终端节点*和 [管理 AWS 区域中的 AWS STS](id_credentials_temp_enable-regions.md) 的 AWS STS 部分](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region)。

下面是让您可以用来获取临时凭证以用于您的 AWS 环境和应用程序的 API 操作。

## 请求通过自定义身份凭证代理程序进行跨账户委派和联合身份验证的凭证
<a name="api_assumerole"></a>

[https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html) API 操作对于允许现有 IAM 用户访问其没有访问权限的 AWS 资源很有用。例如，用户可能需要对其他 AWS 账户 中资源的访问权限。此外，可使用它来暂时获得特权访问权限 - 例如，提供多重身份验证 (MFA)。您必须使用活动凭证调用该 API。要了解谁可以调用此操作，请参阅 [比较 AWS STS 凭证](id_credentials_sts-comparison.md)。有关更多信息，请参阅[创建角色，向 IAM 用户授予权限](id_roles_create_for-user.md)和[使用 MFA 保护 API 访问](id_credentials_mfa_configure-api-require.md)。

**要请求通过自定义身份凭证代理程序进行跨账户委派和联合身份验证的临时安全凭证**

1. 使用您的 AWS 安全凭证进行身份验证。必须使用有效的 AWS 安全凭证来进行此调用。

1. 调用 [https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com//STS/latest/APIReference/API_AssumeRole.html) 操作。

以下示例显示了使用 `AssumeRole` 的示例请求和响应。此示例请求将在指定的持续时间内担任 `demo` 角色，其中包含[会话策略](access_policies.md#policies_session)、[会话标签](id_session-tags.md)、[外部 ID](id_roles_common-scenarios_third-party.md) 和[源身份](id_credentials_temp_control-access_monitor.md)。生成的会话命名为 `John-session`。

**Example 示例请求**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=AssumeRole
&RoleSessionName=John-session
&RoleArn=arn:aws::iam::123456789012:role/demo
&Policy=%7B%22Version%22%3A%222012-10-17		 	 	 %22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&ExternalId=123ABC
&SourceIdentity=DevUser123
&AUTHPARAMS
```

在前面的示例中显示的策略值是以下策略的 URL 编码版本：

------
#### [ JSON ]

****  

```
{"Version":"2012-10-17",		 	 	 "Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}
```

------

示例中的 `AUTHPARAMS` 参数是您的*签名* 的占位符。签名是您必须在 AWS HTTP API 请求中包含的身份验证信息。建议使用 [AWS 开发工具包](https://aws.amazon.com/tools/)创建 API 请求，这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求，请参阅《Amazon Web Services 一般参考》中的 [使用签名版本 4 签署 AWS 请求](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)**，以了解如何签署请求。

除了临时安全凭证之外，该响应还包括联合身份用户的 Amazon Resource Name (ARN) 和凭证的到期时间。

**Example 响应示例**  

```
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleResult>
<SourceIdentity>DevUser123</SourceIdentity>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==
  </SessionToken>
  <SecretAccessKey>
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-07-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
<AssumedRoleUser>
  <Arn>arn:aws:sts::123456789012:assumed-role/demo/John</Arn>
  <AssumedRoleId>ARO123EXAMPLE123:John</AssumedRoleId>
</AssumedRoleUser>
<PackedPolicySize>8</PackedPolicySize>
</AssumeRoleResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</AssumeRoleResponse>
```

**注意**  
AWS 转换会将传递的会话策略和会话标签压缩为具有单独限制的打包二进制格式。即使您的纯文本符合其他要求，您的请求也可能会由于此限制而失败。`PackedPolicySize` 响应元素指示您请求的策略和标签接近大小上限的程度，以百分比来表示。

## 通过 OIDC 提供商请求凭证
<a name="api_assumerolewithwebidentity"></a>

[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API 操作返回一组临时的 AWS 安全凭证，以换取 JSON Web 令牌（JWT）。这包括公共身份提供者，例如，使用 Login with Amazon、Facebook、Google，以及发布与 OpenID Connect（OIDC）发现兼容的 JWT 的提供者，例如 GitHub 操作或 Azure Devops。有关更多信息，请参阅 [OIDC 联合身份验证](id_roles_providers_oidc.md)。

**注意**  
`AssumeRoleWithWebIdentity` 请求未使用签名，也不需要 AWS 凭证。

**通过 OIDC 提供商请求凭证**

1. 调用 [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) 操作。

   当您调用 `AssumeRoleWithWebIdentity` 时，AWS 会使用通过 IdP 的 JSON Web 密钥集（JWKS）提供的公钥验证数字签名，从而验证所提供的令牌。如果令牌有效，并且满足 IAM 角色信任策略中规定的所有条件，则 AWS 会向您返回以下信息：
   + 一组临时安全凭证。这些证书由访问密钥 ID、秘密访问密钥和会话令牌组成。
   + 所担任角色的角色 ID 和 ARN。
   + 一个 `SubjectFromWebIdentityToken` 值，其中包含独一无二的用户 ID。

1. 然后，您的应用程序可以使用响应中返回的临时安全凭证进行 AWS API 调用。该过程与使用长期安全凭证进行 AWS API 调用相同。不同之处在于，您必须包含会话令牌，以便 AWS 验证临时安全凭证是否有效。

您的应用程序应缓存 AWS STS 返回的凭证，并根据需要刷新凭证。如果您的应用程序是使用 AWS SDK 构建的，则 SDK 的凭证提供者可以在凭证过期之前处理调用 `AssumeRoleWithWebIdentity` 和刷新 AWS 凭证。有关更多信息，请参阅《AWS SDK 和工具参考指南》**中的《AWS SDK 和工具标准化凭证提供者》[https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)。

## 通过 SAML 2.0 身份提供商请求凭证
<a name="api_assumerolewithsaml"></a>

[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API 操作为通过您的组织的现有身份系统验证的 SAML 联合主体返回一组临时安全凭证。用户还必须使用 [SAML](https://www.oasis-open.org/standards#samlv2.0) 2.0（安全断言标记语言）将身份验证和授权信息传递给 AWS。对于将身份系统 (如 Windows Active Directory 或 OpenLDAP) 与可生成 SAML 断言的软件集成在一起的组织，该 API 操作是非常有用的。此类集成提供有关用户身份和权限 (如 Active Directory 联合身份验证服务或 Shibboleth) 的信息。有关更多信息，请参阅 [SAML 2.0 联合身份验证](id_roles_providers_saml.md)。

1. 调用 [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) 操作。

   这是一个未签名的调用，意味着您无需在发出请求之前对 AWS 安全凭证进行身份验证。
**注意**  
对 `AssumeRoleWithSAML` 的调用未签名 (加密)。因此，只有在通过受信任的中介传输请求时，才应包含可选的会话策略。在这种情况下，有人可能会修改策略以删除限制。

1. 调用 `AssumeRoleWithSAML` 时，AWS 将验证 SAML 断言的真实性。假定身份提供程序证实断言有效，则 AWS 向您返回以下信息：
   + 一组临时安全凭证。这些证书由访问密钥 ID、秘密访问密钥和会话令牌组成。
   + 所担任角色的角色 ID 和 ARN。
   + `Audience` 值，包含 SAML 断言的 `Recipient` 元素的 `SubjectConfirmationData` 属性值。
   + `Issuer` 值，包含 SAML 断言的 `Issuer` 元素值。
   + `NameQualifier` 元素，包含通过 `Issuer` 值、AWS 账户 ID 以及 SAML 提供商的易记名称生成的哈希值。与 `Subject` 元素相结合时，它们可以唯一地标识 SAML 联合主体。
   + `Subject` 元素，包含 SAML 断言的 `NameID` 元素的 `Subject` 元素值。
   + `SubjectType` 元素，指示 `Subject` 元素的格式。值可以是 `persistent`、`transient` 或在您的 SAML 断言中使用的 `Format` 和 `Subject` 元素的完整 `NameID` URI。有关 `NameID` 元素的 `Format` 属性的信息，请参阅[为身份验证响应配置 SAML 断言。](id_roles_providers_create_saml_assertions.md)。

1. 使用响应中返回的临时安全凭证进行 AWS API 调用。该过程与使用长期安全凭证进行 AWS API 调用相同。不同之处在于，您必须包含会话令牌，以便 AWS 验证临时安全凭证是否有效。

您的应用程序应缓存凭证。默认情况下，凭证在 1 小时后到期。如果未使用 [ 软件开发工具包中的 ](https://aws.amazon.com/blogs/mobile/using-the-amazoncredentialsprovider-protocol-in-the-aws-sdk-for-ios)AmazonSTSCredentialsProviderAWS 操作，则由您和您的应用程序负责再次调用 `AssumeRoleWithSAML`。在旧安全凭证到期之前，可以调用该操作以获取一组新的临时安全凭证。

## 通过自定义身份凭证代理程序请求凭证
<a name="api_getfederationtoken"></a>

[https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) API 操作为 AWS STS 联合用户主体返回一组临时安全凭证。该 API 不同于 `AssumeRole`，其默认有效期大大增加 (12 小时而不是 1 小时)。此外，您还可以使用 `DurationSeconds` 参数指定临时安全凭证保持有效的持续时间。生成的凭证在指定的时间段内有效，介于 900 秒（15 分钟）到 129600 秒（36 小时）之间。较长的有效期有助于减少调用 AWS 的次数，因为您不需要经常获取新凭证。

1. 使用您的特定 IAM 用户的 AWS 安全凭证进行身份验证。必须使用有效的 AWS 安全凭证来进行此调用。

1. 调用 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 操作。

`GetFederationToken` 调用将返回临时安全凭证，其中包括会话令牌、访问密钥、私有密钥和到期时间。如果要在组织内管理权限 (例如，使用代理应用程序分配权限)，则可使用 `GetFederationToken`。

以下示例显示了使用 `GetFederationToken` 的示例请求和响应。此示例请求使用[会话策略](access_policies.md#policies_session) ARN 和[会话标签](id_session-tags.md)，在指定的持续时间内联合调用用户的身份。生成的会话命名为 `Jane-session`。

**Example 示例请求**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetFederationToken
&Name=Jane-session
&PolicyArns.member.1.arn==arn%3Aaws%3Aiam%3A%3A123456789012%3Apolicy%2FRole1policy
&DurationSeconds=1800
&Tags.member.1.Key=Project
&Tags.member.1.Value=Pegasus
&Tags.member.2.Key=Cost-Center
&Tags.member.2.Value=12345
&AUTHPARAMS
```

上述示例中显示的策略 ARN 包含以下 URL 编码的 ARN：

`arn:aws:iam::123456789012:policy/Role1policy`

还要注意，该示例中的 `&AUTHPARAMS` 参数用作身份验证信息的占位符。这是*签名*，您必须将其包括在 AWS HTTP API 请求中。建议使用 [AWS 开发工具包](https://aws.amazon.com/tools/)创建 API 请求，这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求，请访问《Amazon Web Services 一般参考》中的 [使用签名版本 4 签署 AWS 请求](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)**，以了解如何签署请求。

除了临时安全凭证之外，该响应还包括联合身份用户的 Amazon Resource Name (ARN) 和凭证的到期时间。

**Example 响应示例**  

```
<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetFederationTokenResult>
<Credentials>
  <SessionToken>
   AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW
   LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd
   QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU
   9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz
   +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE==
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2019-04-15T23:28:33.359Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId>
</Credentials>
<FederatedUser>
  <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn>
  <FederatedUserId>123456789012:Jean</FederatedUserId>
</FederatedUser>
<PackedPolicySize>4</PackedPolicySize>
</GetFederationTokenResult>
<ResponseMetadata>
<RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId>
</ResponseMetadata>
</GetFederationTokenResponse>
```

**注意**  
AWS 转换会将传递的会话策略和会话标签压缩为具有单独限制的打包二进制格式。即使您的纯文本符合其他要求，您的请求也可能会由于此限制而失败。`PackedPolicySize` 响应元素指示您请求的策略和标签接近大小上限的程度，以百分比来表示。

AWS 建议您在资源级别授予权限（例如，将基于资源的策略附加到 Amazon S3 存储桶），则可省略 `Policy` 参数。但是，如果不加入针对 AWS STS 联合用户主体的策略，则临时安全凭证将不授予任何权限。在这种情况下，您*必须* 使用资源策略为联合身份用户授予您的 AWS 资源的访问权限。

例如，假设您的 AWS 账户 号码为 111122223333，且您拥有希望允许 Susan 访问的 Amazon S3 存储桶。Susan 的临时安全凭证不包括该存储桶的策略。在这种情况下，您需要确保该存储桶的策略具有与 Susan 的 ARN (如 `arn:aws:sts::111122223333:federated-user/Susan`) 匹配的 ARN。

## 为不受信任的环境中的用户请求凭证
<a name="api_getsessiontoken"></a>

[https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) API 操作向现有 IAM 用户返回一组临时安全凭证。此 API 对提高安全性非常有用，例如在已针对 IAM 用户启用 MFA 的情况下提出 AWS 请求。由于凭证是临时的，因此，在 IAM 用户通过不太安全的环境访问您的资源时，它们提供了增强的安全性。不太安全的环境示例包括移动设备或 Web 浏览器。

1. 使用您的特定 IAM 用户的 AWS 安全凭证进行身份验证。必须使用有效的 AWS 安全凭证来进行此调用。

1. 调用 [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetSessionToken.html) 操作。

1. `GetSessionToken` 将返回临时安全凭证，其中包括会话令牌、访问密钥 ID 和秘密访问密钥。

默认情况下，IAM 用户的临时安全凭证的有效期最长为 12 小时。但是，您可以使用 `DurationSeconds` 参数请求短至 15 分钟或长达 36 小时的持续时间。出于安全考虑，AWS 账户根用户的令牌有效期仅为一小时。

以下示例显示了使用 `GetSessionToken` 的示例请求和响应。响应也包括了临时安全凭证的过期时间。

**Example 示例请求**  

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=1800
&AUTHPARAMS
```

示例中的 `AUTHPARAMS` 参数是您的*签名* 的占位符。签名是您必须在 AWS HTTP API 请求中包含的身份验证信息。建议使用 [AWS 开发工具包](https://aws.amazon.com/tools/)创建 API 请求，这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求，请访问《Amazon Web Services 一般参考》中的 [使用签名版本 4 签署 AWS 请求](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)**，以了解如何签署请求。

**Example 响应示例**  

```
<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<GetSessionTokenResult>
<Credentials>
  <SessionToken>
   AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L
   To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z
   rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp
   Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
  </SessionToken>
  <SecretAccessKey>
  wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY
  </SecretAccessKey>
  <Expiration>2011-07-11T19:55:29.611Z</Expiration>
  <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId>
</Credentials>
</GetSessionTokenResult>
<ResponseMetadata>
<RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId>
</ResponseMetadata>
</GetSessionTokenResponse>
```

（可选）`GetSessionToken` 请求可能包括 `SerialNumber` 和 `TokenCode` 值以进行 AWS Multi-Factor Authentication (MFA) 验证。如果提供的值有效，AWS STS 将提供包含 MFA 身份验证状态的临时安全凭证。然后，可以使用临时安全凭证访问受 MFA 保护的 API 操作或 AWS 网站，但前提是 MFA 身份验证有效。

下例展示一个 `GetSessionToken` 请求，其中包括 MFA 验证代码和设备序列号。

```
https://sts.amazonaws.com/
?Version=2011-06-15
&Action=GetSessionToken
&DurationSeconds=7200
&SerialNumber=YourMFADeviceSerialNumber
&TokenCode=123456
&AUTHPARAMS
```

**注意**  
对 AWS STS 的调用可能针对的是全局端点，也可能针对的是激活您的 AWS 账户 的任何区域终端节点。有关更多信息，请参阅[*区域和终端节点*的 AWS STS 部分](https://docs.aws.amazon.com/general/latest/gr/rande.html#sts_region)。  
示例中的 `AUTHPARAMS` 参数是您的*签名* 的占位符。签名是您必须在 AWS HTTP API 请求中包含的身份验证信息。建议使用 [AWS 开发工具包](https://aws.amazon.com/tools/)创建 API 请求，这样做的一个好处是开发工具包将为您处理请求签名。如果您必须手动创建并签署 API 请求，请参阅《Amazon Web Services 一般参考》中的 [使用签名版本 4 签署 AWS 请求](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)**，以了解如何签署请求。