如何排查与 Amazon ECS 中的计划任务相关的问题?

2 分钟阅读
0

我已计划定期运行我的 Amazon Elastic Container Service (Amazon ECS) 任务。但我的 Amazon ECS 任务没有触发。我没有收到集群中任务的执行日志或历史记录。

解决方法

当您使用计划的 Amazon ECS 任务时,Amazon CloudWatch Events 会向 Amazon ECS 调用 RunTask API 以代表您运行任务。

由于以下原因,可能无法调用您计划的 Amazon ECS 任务:

  • Amazon EventBridge 时间或 cron 表达式配置不正确。
  • EventBridge 规则没有调用目标。
  • RunTask API 无法运行。
  • 由于应用程序问题或资源限制,容器退出。

检查 EventBridge cron 表达式是否配置错误

要获取 EventBridge cron 表达式,请运行以下 AWS Command Line Interface (AWS CLI) 命令:

$ aws events describe-rule --name "example-rule" --region example-region

在该命令的输出中,您可以在参数 ScheduleExpression 中查看配置的 EventBridge cron 表达式。确保设置规则的计划采用 UTC+0 时区。

**注意:**如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

检查规则是否未调用目标

使用 EventBridge 生成的 Amazon CloudWatch 指标查看规则性能。Invocation(调用)数据点指示规则调用了目标。如果存在 FailedInvocations(未能调用)数据点,则表示调用目标时出现问题。FailedInvocations(未能调用)表示永久性故障,可能是由权限不正确或目标配置错误所致。

要查看 EventBridge 规则的 CloudWatch 指标,请执行以下操作:

  1. 打开 CloudWatch console(CloudWatch 控制台)。
  2. 在导航窗格中,选择 Metrics(指标),然后选择 All metrics(所有指标)。
  3. 选择 Events(事件)。
  4. 选择 By Rule Name(按规则名称)。
  5. 为配置为运行 ECS 任务的 EventBridge 规则选择 TriggerRulesInvocationsFailedInvocations(如果可用)指标。
  6. 选择 Graphed metrics(已绘制指标)选项卡。
  7. 对于列出的所有指标,为 Statistic(统计数据)选择 SUM

如果存在 FailedInvocations(未能调用)数据点,则可能存在与目标权限不足有关的问题。确保 EventBridge 有权调用您的 ECS 任务。验证 EventBridge AWS Identity and Access Management (IAM) 角色是否具有所需的权限。有关更多信息,请参阅 Amazon ECS CloudWatch 事件 IAM 角色

检查 RunTask 操作是否无法运行

要验证 RunTask API 是否无法运行,请在预期调用计划 ECS 任务的时间范围内在 AWS CloudTrail 事件历史记录中搜索 RunTask

要了解是否因为 RunTask 操作失败而无法调用计划任务,请执行以下操作:

  1. 打开 AWS CloudTrail 控制台
  2. 在导航窗格中,选择 Event history(事件历史记录)。
  3. Event history(事件历史记录)页面中,为 Lookup attributes(查找属性)选择 Event name(事件名称)。
  4. 对于 Enter an event name(输入事件名称),输入 RunTask
  5. 根据计划 ECS 任务预期运行的时间,在时间范围筛选条件中选择时间范围。
    **注意:**时间范围的预设值为 30 分钟、1 小时、3 小时和 12 小时。要指定自定义时间范围,请选择 Custom(自定义)。
  6. 从结果列表中,选择要查看的事件。
  7. 滚动到 Details(详细信息)页面上的 Event record(事件记录)以查看 JSON 事件记录。
  8. 在 JSON 事件记录中查找 errorMessageresponseElements.failures.reason 元素。
    JSON 事件记录中的这些元素显示未调用计划 ECS 任务的原因。

有关 RunTask API 失败原因及其原因的示例,请参阅 API 失败原因

检查任务运行后容器是否退出

由于应用程序问题或资源限制,即使任务成功运行后,Amazon ECS 任务仍可能停止。有关更多信息,请参阅如何排查 Amazon ECS 任务中容器退出的问题?


相关信息

如何对 Fargate 上意外停止的 Amazon ECS 任务进行问题排查?

AWS 官方
AWS 官方已更新 2 年前