跳至内容

如何使用死信队列对 EventBridge 规则的 FailedInvocations 指标进行故障排除?

2 分钟阅读
0

我想将死信队列 (DLQ) 与 Amazon EventBridge 规则的目标关联起来,以便对 FailedInvocations 指标进行故障排除。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

创建标准的 Amazon SQS 队列

使用 Amazon Simple Queue Service (Amazon SQS) 控制台创建 SQS 队列。

完成以下步骤:

  1. 打开 Amazon SQS 控制台
  2. 选择 Create queue(创建队列)。
  3. 对于 Type(类型),选择 Standard(标准)队列类型。
  4. 输入队列的名称,例如 myEventBridgeDLQ
  5. 选择 Create queue(创建队列)。

将 SQS 队列与 EventBridge 规则的目标相关联

完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 在导航窗格中,选择 Rules(规则)。
  3. 选择未能调用目标的 EventBridge 规则,然后选择 Edit(编辑)。
  4. 在导航窗格中,选择 Select target(s)(选择目标),然后选择 Additional settings(其他设置)。
  5. 对于 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 队列。
  6. 选择 Skip to Review and update(跳至查看并更新)。
  7. 选择 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 指标,请完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 选择您的 EventBridge 规则,然后选择 Monitoring(监控)选项卡。
  3. 查找 MatchedEventsTriggeredRules 以确认该规则与事件相匹配。
  4. 检查 InvocationsFailedInvocations 以确认规则已尝试调用目标。

**注意:**如果指标没有数据点,请确保您已正确配置规则模式。

检索 EventBridge 发送到 DLQ 的失败事件

完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 在导航窗格中,选择 Rules(规则)。
  3. 选择调用失败的 EventBridge 规则。
  4. 选择 Targets(目标)选项卡,然后选择 DLQ。
  5. 选择 Send and receive messages(发送和接收消息)以打开 SQS 控制台上的 Send and receive messages(发送和接收消息)页面。
  6. 选择 Poll for messages(轮询消息)。
    **注意:**Messages(消息)部分显示收到的消息列表。该列表显示每条消息的消息 ID、发送日期、大小和接收次数。
  7. 选择其中一条消息。然后,选择 View details(查看详细信息)以查看 EventBridge 未能向目标发送的事件。
  8. 选择 Attributes(属性)选项卡以查看 ERROR_CODEERROR_MESSAGERULE_ARNTARGET_ARN 属性。
    **注意:**ERROR_CODEERROR_MESSAGE 属性提供了事件传送失败的原因。

相关信息

如何解决与 Amazon EventBridge 规则有关的问题?

Amazon SQS 权限

AWS 官方已更新 1 年前