如何解决与 Amazon ECS 计划的任务相关的问题?

2 分钟阅读
0

我安排了定期运行我的 Amazon Elastic Container Service(Amazon ECS)任务。但是,我的 Amazon ECS 任务尚未激活。我没有收到执行日志或集群中任务历史记录。

解决方法

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

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

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

确认 EventBridge cron 表达式配置正确

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

If Eventbridge rules is used
$ aws events describe-rule --name "example-rule" --region example-region

If Eventbridge scheduler is used
$ aws scheduler get-schedule --name "example-schedule" --region example-region

在命令的输出中,在参数 ScheduleExpression 中查看配置的 EventBridge cron 表达式。请务必在 UTC+0 时区设置规则的计划。

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

检查规则是否未调用目标

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

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

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中,选择指标,然后选择所有指标
  3. 选择活动
  4. 选择按规则名称
  5. 为配置为运行 ECS 任务的 EventBridge 规则选择触 TriggerRulesInvocationsFailedInvocations 指标。
  6. 选择绘成图表的指标选项卡。
  7. 对于列出的所有指标,请为统计数据选择 SUM

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

检查计划是否未调用目标

要查看规则性能,请使用 EventBridge 生成的 Amazon CloudWatch 指标InvocationAttemptCount 数据点表明 EventBridge Scheduler 正在尝试调用您的计划。如果存在 TargetErrorCount 数据点,则目标调用存在问题。InvocationDroppedCount 表示永久故障,可能是权限错误或目标配置错误所致。

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

  1. 打开 CloudWatch 控制台
  2. 在导航窗格中,选择指标,然后选择所有指标
  3. 选择调度器
  4. 选择计划组指标
  5. 为配置为运行 ECS 任务的 EventBridge 规则选择 InvocationAttemptCountTargetErrorCountInvocationDroppedCount 指标。
  6. 选择绘成图表的指标选项卡。
  7. 对于列出的所有指标,请为统计数据选择 SUM

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

检查 RunTask 操作是否已运行

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

要查找计划任务是否因为 RunTask 操作失败而未调用,请执行以下操作:

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

有关 RunTask API 失败原因及其导致因素的示例,请参阅 Amazon ECS API 失败原因

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

由于应用程序问题或资源限制,即使任务成功运行,Amazon ECS 任务也可能会停止。有关更多信息,请参阅如何解决 Amazon ECS 任务在容器退出时停止或无法开始的问题?

相关信息

如何解决 Amazon ECS 任务在容器退出时停止或无法开始的问题?

AWS 官方
AWS 官方已更新 6 个月前