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)
以下是一个可能的解决方法:使用 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
我已经测试过并且有效。
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |