我想将死信队列 (DLQ) 与 Amazon EventBridge 规则的目标关联起来,以便对 FailedInvocations 指标进行故障排除。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
创建标准的 Amazon SQS 队列
使用 Amazon Simple Queue Service (Amazon SQS) 控制台创建 SQS 队列。
完成以下步骤:
- 打开 Amazon SQS 控制台。
- 选择 Create queue(创建队列)。
- 对于 Type(类型),选择 Standard(标准)队列类型。
- 输入队列的名称,例如 myEventBridgeDLQ。
- 选择 Create queue(创建队列)。
将 SQS 队列与 EventBridge 规则的目标相关联
完成以下步骤:
- 打开 EventBridge 控制台。
- 在导航窗格中,选择 Rules(规则)。
- 选择未能调用目标的 EventBridge 规则,然后选择 Edit(编辑)。
- 在导航窗格中,选择 Select target(s)(选择目标),然后选择 Additional settings(其他设置)。
- 对于 Dead-letter queue(死信队列),选择 Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue(选择当前 AWS 账户中的一个 Amazon SQS 队列作为死信队列)。然后,在 Select an SQS queue(选择 SQS 队列)下拉列表中选择您的 SQS 队列。
- 选择 Skip to Review and update(跳至查看并更新)。
- 选择 Update rule(更新规则)。
EventBridge 必须有权将调用失败的事件发送到 SQS 队列。如果您使用 EventBridge 控制台将 DLQ 与 EventBridge 规则的目标相关联,则 EventBridge 会自动添加权限。如果您使用 AWS CLI、AWS SDK 或 AWS CloudFormation,则必须手动创建授予所需权限的基于资源的策略。您可以运行 set-queue-attributes 命令来修改策略。
**重要事项:**如果您加密了 SQS 队列,则必须创建客户自主管理型密钥。您还必须在 AWS Key Management Service (AWS KMS) 密钥策略中包含以下权限:
{ "Sid": "Allow EventBridge to use the key",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*"
}
有关详细信息,请参阅配置 AWS KMS 权限。
向您的 EventBridge 事件总线发送符合您的 EventBridge 规则的事件
要将符合事件规则的事件发送到您的默认事件总线,请针对 AWS 服务事件更改您的 AWS 环境。如果 EventBridge 规则无法调用目标,则 EventBridge 会将所有失败的事件发送到 DLQ。
要将符合事件规则的事件发送到自定义事件总线,请使用 PutEvents API 或 put-events 命令。
要检查您的 EventBridge 规则的 FailedInvocations 指标,请完成以下步骤:
- 打开 EventBridge 控制台。
- 选择您的 EventBridge 规则,然后选择 Monitoring(监控)选项卡。
- 查找 MatchedEvents 和 TriggeredRules 以确认该规则与事件相匹配。
- 检查 Invocations 和 FailedInvocations 以确认规则已尝试调用目标。
**注意:**如果指标没有数据点,请确保您已正确配置规则模式。
检索 EventBridge 发送到 DLQ 的失败事件
完成以下步骤:
- 打开 EventBridge 控制台。
- 在导航窗格中,选择 Rules(规则)。
- 选择调用失败的 EventBridge 规则。
- 选择 Targets(目标)选项卡,然后选择 DLQ。
- 选择 Send and receive messages(发送和接收消息)以打开 SQS 控制台上的 Send and receive messages(发送和接收消息)页面。
- 选择 Poll for messages(轮询消息)。
**注意:**Messages(消息)部分显示收到的消息列表。该列表显示每条消息的消息 ID、发送日期、大小和接收次数。
- 选择其中一条消息。然后,选择 View details(查看详细信息)以查看 EventBridge 未能向目标发送的事件。
- 选择 Attributes(属性)选项卡以查看 ERROR_CODE、ERROR_MESSAGE、RULE_ARN 和 TARGET_ARN 属性。
**注意:**ERROR_CODE 和 ERROR_MESSAGE 属性提供了事件传送失败的原因。
相关信息
如何解决与 Amazon EventBridge 规则有关的问题?
Amazon SQS 权限