

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

# 将临时安全凭证用于 Amazon SQS
<a name="sqs-using-temporary-security-credentials"></a>

除了使用自己的安全证书创建用户外，IAM 还允许您向任何用户授予临时安全证书，从而允许该用户访问您的 Amazon 服务和资源。您可以管理拥有 Amazon Web Services 账户的用户。您还可以管理系统中没有的用户 Amazon Web Services 账户 （联合用户）。此外，您为访问 Amazon 资源而创建的应用程序也可以被视为 “用户”。

您可以使用上述临时安全凭证对 Amazon SQS 发出请求。API 库会使用这些凭证计算必要的签名值，以便对您的请求进行身份验证。如果您使用过期的凭证发送请求，则 Amazon S3 会拒绝请求。

**注意**  
您不能基于临时凭证设置策略。

## 先决条件
<a name="temporary-security-credentials-prerequisites"></a>

1. 使用 IAM 创建临时安全凭证：
   + 安全令牌
   + 访问密钥 ID
   + 秘密访问密钥

1. 使用临时访问密钥 ID 和安全令牌准备待签字符串。

1. 使用临时秘密访问密钥（而不是您自己的秘密访问密钥）对您的查询 API 请求签名。

**注意**  
在提交已签名的查询 API 请求时，请使用临时访问密钥 ID（而不是您自己的访问密钥 ID），并且包含安全令牌。有关 IAM 对临时安全证书的支持的更多信息，请参阅 I *AM 用户指南*中的[授予对 Amazon 资源的临时访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/TokenBasedAuth.html)。

## 使用临时安全凭证调用 Amazon SQS 查询 API 操作
<a name="temporary-security-credentials-query-api"></a>

1. 使用申请临时安全令牌 Amazon Identity and Access Management。有关更多信息，请参阅《IAM 用户指南》**中的[创建临时安全凭证以便为 IAM 用户启用访问权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/CreatingSessionTokens.html)。

   IAM 会返回一个安全令牌、一个访问密钥 ID 和一个秘密访问密钥。

1. 使用临时访问密钥 ID（而不是您自己的访问密钥 ID）准备查询，并且包含安全令牌。使用临时秘密访问密钥（而不是您自己的秘密访问密钥）对请求签名。

1. 提交已使用临时访问密钥 ID 和安全令牌签名的查询字符串。

   以下示例说明如何使用临时安全凭证对 Amazon SQS 请求进行身份验证。{{`AUTHPARAMS`}} 的结构取决于 API 请求的签名。有关更多信息，请参阅[《*亚马逊 Web Services 一般参考*》中的 “签署 Amazon API 请求](https://docs.amazonaws.cn/general/latest/gr/signing_aws_api_requests.html)”。

   ```
   https://sqs.us-east-2.amazonaws.com/
   ?Action=CreateQueue
   &DefaultVisibilityTimeout=40
   &QueueName=MyQueue
   &Attribute.1.Name=VisibilityTimeout
   &Attribute.1.Value=40
   &Expires=2020-12-18T22%3A52%3A43PST
   &SecurityToken={{wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY}}
   &AWSAccessKeyId={{AKIAIOSFODNN7EXAMPLE}}
   &Version=2012-11-05
   &{{AUTHPARAMS}}
   ```

   以下示例使用了临时安全凭证来通过 `SendMessageBatch` 操作发送两条消息。

   ```
   https://sqs.us-east-2.amazonaws.com/
   ?Action=SendMessageBatch
   &SendMessageBatchRequestEntry.1.Id=test_msg_001
   &SendMessageBatchRequestEntry.1.MessageBody=test%20message%20body%201
   &SendMessageBatchRequestEntry.2.Id=test_msg_002
   &SendMessageBatchRequestEntry.2.MessageBody=test%20message%20body%202
   &SendMessageBatchRequestEntry.2.DelaySeconds=60
   &Expires=2020-12-18T22%3A52%3A43PST
   &SecurityToken={{je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY}}
   &AWSAccessKeyId={{AKIAI44QH8DHBEXAMPLE}}
   &Version=2012-11-05
   &{{AUTHPARAMS}}
   ```