跳至内容

如何修改 EventBridge 重试设置并使用 DLQ 处理失败的调用?

2 分钟阅读
0

我想修改 Amazon EventBridge 重试策略设置,并为失败的调用设置死信队列 (DLQ)。

解决方案

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

修改 EventBridge 重试的时间长度

EventBridge 使用指数回退和抖动或随机延迟将事件重新发送 24 小时,最多 185 次。为避免调用失败,您可以在目标的重试策略设置中修改 EventBridge 重试的时间长度和次数。

**注意:**EventBridge 仅重试具有 5xx429 HTTP 状态代码的响应,时间最长可达 24 小时。EventBridge 不会重试其他 4xx HTTP 状态代码。

要使用 EventBridge 控制台配置目标的重试策略,请完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 选择您的 EventBridge 规则。
  3. 选择 Targets(目标)选项卡,然后选择 Edit(编辑)。
  4. 展开 Additional settings(其他设置)选项卡。
  5. 对于 Retry attempts(重试尝试),请输入自定义值。

**注意:**对于具有多个目标的事件规则,必须单独为每个目标设置重试策略。

您还可以运行 AWS CLI put-targets 命令或 RetryPolicy API 来配置重试策略。

EventBridge 以不同的方式处理事件错误。例如,当目标没有所需权限或目标已不存在时,EventBridge 可能无法传送事件。或者,EventBridge 可能不会尝试重新发送该事件。相反,EventBridge 可能会删除该事件或将其发送到您配置的 DLQ。

配置 EventBridge DLQ

为防止因传送失败而丢失事件,请配置 EventBridge DLQ。DLQ 接收所有失败的事件供以后处理。

**注意:**在为目标配置 DLQ 之前,必须创建 Amazon Simple Queue Service (Amazon SQS) 队列。在 Amazon SQS 队列策略中,为 EventBridge 规则添加调用队列所需的权限。如果您对 Amazon SQS 队列进行加密,请将解密和 GenerateDataKey 权限添加到 AWS Key Management Service (AWS KMS) 密钥策略中

要配置 DLQ,请完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 选择您的 EventBridge 规则。
  3. 选择 Targets(目标)选项卡,然后选择 Edit(编辑)。
  4. 展开 Additional settings(其他设置)选项卡。
  5. Dead-letter queue(死信队列)部分中,根据您的 DLQ SQS 位于同一 AWS 账户还是不同的账户中选择一个选项。

您还可以运行 AWS CLI put-targets 命令来配置 DLQ。对于 DeadLetterConfig 参数,使用 SQS 队列的 ARN。

从 DLQ 检索错误详细信息

要确认事件规则是否已将消息发送到 DLQ,请查看 InvocationSentToDLQ 指标。

如果有消息,请完成以下步骤:

  1. 打开 SQS 控制台
  2. 选择用作事件规则 DLQ 的队列。
  3. 选择 Send and receive messages(发送和接收消息),然后选择 Poll for messages(轮询消息)。
  4. Messages(消息)部分中,打开消息。
  5. 选择 Attributes(属性)以确定 EventBridge 未能向目标发送消息的原因。
    **注意:**Body(正文)选项卡中的数据是事件传送未失败时 EventBridge 发送给目标的有效载荷。

相关信息

监控 Amazon EventBridge

EventBridge 指标

AWS 官方已更新 7 个月前