

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

# CloudTrail Amazon SQS 死信队列重新驱动的更新和权限要求
<a name="sqs-dead-letter-queues-cloudtrail"></a>

2023 年 6 月 8 日，亚马逊 SQS 推出了适用于 SDK Amazon 和 (CLI) 的死信队列 (DLQ) 重启。 Amazon Command Line Interface 此功能是对已支持的主机 DLQ 重新驱动功能的补充。 Amazon 如果您之前曾使用 Amazon 控制台重新驱动死信队列消息，则可能会受到以下更改的影响：

## CloudTrail 事件重命名
<a name="sqs-dead-letter-queues-cloudtrail-renaming"></a>

2023 年 10 月 15 日，亚马逊 SQS 控制台上死信队列重启 CloudTrail 的事件名称将发生变化。如果您已为这些 CloudTrail 事件设置了警报，则必须立即对其进行更新。以下是 DLQ redrive 的新 CloudTrail 事件名称：


| 上一个事件名称 | 新事件名称 | 
| --- | --- | 
| `CreateMoveTask` | `StartMessageMoveTask` | 
| `CancelMoveTask` | `CancelMessageMoveTask` | 

## 更新权限
<a name="sqs-dead-letter-queues-cloudtrail-permissions"></a>

在 SDK 和 CLI 版本中，Amazon SQS 还更新了 DLQ 重新驱动的队列权限，以遵守安全最佳实践。使用以下队列权限类型从您的 DLQs队列中重新驱动消息。

1. 基于操作的权限（更新 DLQ API 操作）

1. 托管 Amazon SQS 策略权限

1. 使用 sqs:\* 通配符的权限策略

**重要**  
要使用适用于 SDK 或 CLI 的 DLQ 重新驱动，您需要具有与上述选项之一相匹配的 DLQ 重新驱动权限策略。

如果您的 DLQ 重新驱动队列权限与上述选项之一不匹配，则您必须在 2023 年 8 月 31 日之前更新您的权限。从现在起至 2023 年 8 月 31 日，您的账户只能在您之前使用过 DLQ 重新驱动的区域使用您在 Amazon 控制台上配置的权限重新驱动消息。例如，假设您在 us-east-1 和 eu-west-1 中都有“账户 A”。在 2023 年 6 月 8 日之前，“账户 A” 用于在 us-east-1 中在 Amazon 主机上重放消息，但在 eu-west-1 中却没有。在 2023 年 6 月 8 日至 2023 年 8 月 31 日之间，如果 “账户 A” 的策略权限与上述任一选项不匹配，则该权限只能用于在 us-east-1 中在 Amazon 主机上重新发送消息，而不能在 eu-west-1 中重新驱动消息。

**重要**  
 如果在 2023 年 8 月 31 日之后您的 DLQ 重新驱动权限与其中一个选项不匹配，则您的账户将无法再使用 Amazon 控制台重新驱动 DLQ 消息。  
 但是，如果您在 2023 年 8 月期间在 Amazon 主机上使用了 DLQ 重制版功能，则根据其中一个选项，您可以将新权限延长至 2023 年 10 月 15 日。  
 有关更多信息，请参阅 [标识受影响的策略](#identifying-impacted-policies)。

以下是每个 DLQ 重新驱动选项的队列权限示例。使用[服务器端加密 (SSE) 队列](sqs-configure-sse-existing-queue.md)时，需要相应的 Amazon KMS 密钥权限。

**基于操作**

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ReceiveMessage",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:StartMessageMoveTask",
                "sqs:ListMessageMoveTasks",
                "sqs:CancelMessageMoveTask"
            ],
            "Resource": "arn:aws:sqs:us-west-1:123456789012:<DLQ_name>"
        },
        {
            "Effect": "Allow",
            "Action": "sqs:SendMessage",
            "Resource": "arn:aws:sqs:us-west-1:123456789012:<DestQueue_name>"
        }
    ]
}
```

------

**托管策略**

以下托管策略包含所需的更新权限：
+ **Amazon A SQSFull cces** s — 包括以下死信队列重新驱动任务：启动、取消和列出。
+ **Amazon SQSRead OnlyAccess** — 提供只读访问权限，并包括列表死信队列重新驱动任务。

![显示权限策略 AmazonSQSFullAccess（用于启动、取消和列出死信队列重新驱动任务的任务）以及 AmazonSQSReadOnlyAccess（用于只读访问权限）的 Amazon SQS。](http://docs.amazonaws.cn/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-dlq-cloudtrail.png)


**使用 sqs\* 通配符的权限策略**

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

****  

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

------

## 标识受影响的策略
<a name="identifying-impacted-policies"></a>

 如果您使用的是客户托管策略 (CMPs)，则可以使用 Amazon CloudTrail 和 IAM 来识别受队列权限更新影响的策略。

**注意**  
 如果您使用的是 `AmazonSQSFullAccess` 和 `AmazonSQSReadOnlyAccess`，则无需采取进一步操作。

1.  登录 Amazon CloudTrail 控制台。

1.  在**事件历史记录**页面的**查找属性**下，使用下拉菜单选择*事件名称*。然后搜索 `CreateMoveTask`。

1.  选择事件，打开**详细信息**页面。在**事件记录**部分，从 `userIdentity` ARN 中检索 `UserName` 或 `RoleName`。

1.  登录到 IAM 控制台。
   + 对于用户，选择“用户”。通过上一步中标识的 `UserName` 选择用户。
   + 对于角色，选择“角色”。通过上一步中标识的 `RoleName` 搜索用户。

1.  在**详细信息**页面的**权限**部分，查看 `Action` 中前缀为 `sqs:` 的所有策略，或查看 `Resource` 中定义了 Amazon SQS 队列的策略。