从控制台,我调用一个 Lambda 函数来提交一个批处理作业。 但是该批处理作业失败了,提示 ECS 无法承担提供给执行作业定义的角色。
对于角色,我已经添加了 Lambda 和 ECS 服务。
错误消息:
"ECS 无法承担为此任务提供的角色 'arn:aws:iam::749340585813:role/golfnow-invoke-write-progress'。 请验证传递的角色是否具有正确的信任关系和权限,以及您的 IAM 用户是否具有传递此角色所需的权限。"
对于角色,我已经添加了 Lambda 和 ECS 服务。
错误消息:
"ECS 无法承担为此任务提供的角色 'arn:aws:iam::749340585813:role/golfnow-invoke-write-progress'。 请验证传递的角色是否具有正确的信任关系和权限,以及您的 IAM 用户是否具有传递此角色所需的权限。"
"TrainingJobRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"RoleName": "golfnow-invoke-write-progress",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"ecs.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole"
]
}
]
},
"Path": "/"
}
}
批处理作业:
"TrainingJob": {
"Type": "AWS::Batch::JobDefinition",
"Properties": {
"Type": "container",
"JobDefinitionName": {
"Fn::Sub": "c12e-golfnow-${Environment}-job"
},
"ContainerProperties": {
"Image": {
"Fn::Join": [
"",
[
"{{ image omitted }}",
{
"Ref": "AWS::Region"
},
".amazonaws.com/amazonlinux:latest"
]
]
},
"Vcpus": 2,
"Memory": 2000,
"Command": [
"while", "True", ";", "do", "echo", "'hello';", "done"
],
"JobRoleArn": {
"Fn::GetAtt": [
"TrainingJobRole",
"Arn"
]
}
},
"RetryStrategy": {
"Attempts": 1
}
}
},
"JobQueue": {
"Type": "AWS::Batch::JobQueue",
"Properties": {
"Priority": 1,
"ComputeEnvironmentOrder": [
{
"Order": 1,
"ComputeEnvironment": {
"Ref": "ComputeEnvironment"
}
}
]
}
}
问题是调用方式吗?我的用户拥有管理员权限,因此我认为这不是由于用户权限不足引起的问题。
ecs-tasks.amazonaws.com
(不幸的是,我在找到这个问题后才注意到)。 - mjkrause