ECS Fargate计划任务未运行

coo*_*les 20 scheduled-tasks amazon-web-services amazon-ecs aws-fargate

我正在尝试使用ECS Fargate设置计划任务,但我无法弄清楚它为什么没有运行.我可以确认任务正常使用RunTask,但当我尝试按计划触发它时,我得到的是一堆'FailedInvocations',没有任何解释.

我知道虽然规则被触发所以这是一个好兆头.请参见下面的截图:

在此输入图像描述

但每次触发时都会出现'FailedInvocation'.这是调度规则:

在此输入图像描述

ecsEventRole只有ecs:runTask以下内容的默认权限:

在此输入图像描述

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的预感说这ecsEventsRole没有足够的权限.我应该尝试给它那些ecsTaskExecutionRole吗?

谢谢

编辑:现在支持us-east-1区域.看评论.

小智 18

虽然已经一年多了,但是AWS仍然没有正确的方式查看调用日志。

如您所知,我们可以RunTask手动调用任务,计划任务也是如此。

唯一的区别是计划任务由 CloudWatch 规则触发。

我们可以很容易地看到 invoke logs in CloudTrail Event history,去那里用 Event name 过滤事件:RunTask并选择要检查的时间范围,找到事件并单击View Event,您将看到错误代码和响应。


小智 8

我遇到了类似的问题,其中常规的ECS计划任务没有运行.

我最终通过添加一个ecsEventsRole允许CloudWatch Events将IAM角色传递给ECS任务的附加策略来解决它:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListInstanceProfiles",
                "iam:ListRoles",
                "iam:PassRole"
            ],
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)


Fre*_*ace 3

以下是一个可能的解决方法:使用 lambda 函数作为 cloudwatch 规则的目标,并在 lambda 函数代码中创建任务。

以下是 lambda 函数的示例代码: https ://lobster1234.github.io/2017/12/03/run-tasks-with-aws-fargate-and-lambda/

这些链接描述了如何使用 lambda 函数打包新的 boto 版本,但这不再是必要的,因为 AWS 已经将 lambda boto 版本更新到 1.4.8

我已经测试过并且有效。