跳至内容

如何使用 Amazon ECS 对 EventBridge 规则进行故障排除?

2 分钟阅读
0

我的 Amazon EventBridge 规则无法调用我的 Amazon Elastic Container Service (Amazon ECS) 任务。

简短描述

当您使用 EventBridge 规则调用 Amazon ECS 任务时,EventBridge 会调用 RunTask API 来运行任务。

EventBridge 规则可能由于以下原因而无法调用您的 ECS 任务:

  • EventBridge 规则配置不正确。
  • EventBridge 规则的目标配置不正确。
  • AWS Identity and Management (IAM) 角色没有运行任务的权限。

解决方法

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

检查 EventBridge 规则配置

检查 EventBridge 规则是否处于 ENABLED(已启用)状态。如果它处于 DISABLED(已禁用)状态,请重新激活该规则并执行测试以确定该规则是否可以创建任务。

要检查规则的状态,您可以使用 EventBridge 控制台或 AWS CLI。

EventBridge 控制台

完成以下步骤:

  1. 打开 EventBridge 控制台
  2. 在导航窗格中,选择 Rules(规则)。
  3. Select Event bus(选择事件总线)下,选择与规则关联的事件总线。
  4. 选择规则以查看其状态。

AWS CLI

运行以下 describe-rule 命令:

aws events describe-rule --name "DailyLambdaFunction" --region "us-east-1"

**注意:**请将 us-east-1 替换为您的 AWS 区域。

在命令的输出中,检查 State 参数以确定规则的状态。如果规则处于 DISABLED(已禁用)状态,请检查 AWS CloudTrail 日志以确定该规则被停用的原因。

确保事件模式正确且与来自事件源的事件相匹配。要验证事件模式,请使用 EventBridge 沙盒

检查 EventBridge 规则的目标配置

请执行以下操作:

  • 检查 EventBridge 规则目标的 ECS ClusterTaskDefinitionNetwork configuration 参数,以确保它们正确无误。
  • 验证 EventBridge IAM 角色是否具有运行任务所需的权限。

使用以下 Amazon CloudWatch 指标来帮助您进行故障排除:

  • 检查 TriggeredRules 指标。CloudWatch 仅在事件触发规则时显示该指标。
  • 使用 Invocations 指标来检查 EventBridge 调用规则然后尝试运行 ECS 任务的次数。
  • 使用 FailedInvocations 指标来确定调用失败的次数。如果该值为较高的值,则您的目标配置可能不正确。
    **注意:**Sum(总和)统计数据可能是检查 FailedInvocations 指标的最有用的统计数据。

确定 RunTask API 调用失败的原因

完成以下步骤:

  1. 打开 CloudTrail 控制台
  2. 在导航窗格中,选择事件历史记录
  3. Lookup attributes(查找属性)下拉列表中,选择 Event name(事件名称)。
  4. 在文本框中,输入 RunTask 以筛选出与 RunTask API 相关的事件。
  5. 根据预期的 ECS 任务运行时筛选时间范围。
    **注意:**时间范围的默认值为 30 分钟、1 小时、3 小时和 12 小时。要指定自定义时间范围,请选择 Absolute range(绝对范围)。
  6. 选择事件,然后在 Event record(事件记录)部分中查看 JSON 事件记录。在 errorCodeerrorMessage 下查找失败原因。

使用 EventBridge DLQ

EventBridge 规则支持死信队列 (DLQ)。DLQ 使用 Amazon Simple Queue Service (Amazon SQS) 将调用失败事件存储在您指定的标准队列中。当事件规则未调用其目标时,EventBridge 会将包含调用详细信息和目标响应的 JSON 有效载荷传送到 DLQ。您可以在 DLQ 中分析失败的事件传送以解决问题。

相关信息

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

How can I use a dead-letter queue to troubleshoot FailedInvocations for EventBridge rules?(如何使用死信队列对 EventBridge 规则的调用失败问题进行故障排除?)

AWS 官方已更新 1 年前