我正在努力使用 ECS Fargate 运行任务,并从 AWS SDK 脚本(JS/Node)启动(ecs.runTask)。
我目前的斗争是从容器中获取日志,以便我可以解决它们停止的原因。我似乎无法正确地获得任务定义,以便生成它们。
logConfiguration: {
logDriver: 'awslogs',
options: {
"awslogs-region": 'us-west-2',
"awslogs-group": 'myTask',
"awslogs-stream-prefix": "myTask",
"awslogs-create-group": "true"
}
}
我已将它们的日志驱动程序设置为 awslogs,但是当我尝试在 CloudWatch 中查看日志时,我什么也得不到:
我怀疑我的权限可能有错误,但当然没有要确认的错误消息。文档( here )表明我需要将某些策略附加到
ecsInstanceRole
,这似乎是在流程中某处使用的角色的占位符。但是我已将这样的策略附加到我的 ECS executionRole,执行我对
runTask
的 API 调用的角色。 ,并且我一直在寻找可能涉及的任何其他角色(Task Def 中似乎不存在实际的“instanceRole”),但没有什么可以改善我的情况。我很乐意提供更多信息,但此时我不确定我的盲点在哪里。
任何人都可以看到吗?
最佳答案
转到您的任务定义。您应该找到一个名为“任务执行 IAM 角色”的部分。描述说——
This role is required by tasks to pull container images and publish container logs to Amazon CloudWatch.
您在此处附加的角色需要像
AmazonECSTaskExecutionRolePolicy
这样的策略(AWS 托管策略),可信实体是 ecs-tasks.amazonaws.com
.此外,
awslogs
选项 awslogs-create-group
不需要,我想。
关于amazon-web-services - ECS 上的 awslogs 的方式和原因(fargate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828959/