Nat*_*eed 30 amazon-web-services aws-batch aws-ecs
从控制台,我正在调用一个提交批处理作业的lambda.批处理作业失败,表示ECS无法承担为执行作业定义而提供的角色.
对于角色,我添加了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": "/"
}
}
Run Code Online (Sandbox Code Playgroud)
批处理作业:
"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"
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它被调用的问题吗?我的用户具有管理员权限,因此我不认为这是我的用户权限不足的问题.
Nat*_*eed 41
您必须将主体"ecs-tasks.amazonaws.com"添加到提交批处理作业(而不是"ecs.amazonaws.com")的角色的信任策略中.
修改后的角色:
"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-tasks.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole"
]
}
]
},
"Path": "/"
}
},
Run Code Online (Sandbox Code Playgroud)