【发布时间】:2021-06-02 11:50:48
【问题描述】:
我创建了一个 AWS Fargate 集群
现在我更改了 docker 映像,以便从 s3 读取输入数据。 在开发人员阶段,我通过环境变量传递了凭据,并且容器工作了
现在在 AWS 我想我应该添加一个策略
我首先创建一个角色
iam_role='ecsTaskExecutionRole'
aws iam wait role-exists --role-name $iam_role 2>/dev/null || \ aws iam --region $REGION create-role --role-name $iam_role \
--assume-role-policy-document file://task-execution-assume-role.json || return 1
aws iam --region $REGION attach-role-policy --role-name $iam_role \
--policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy || return 1
我传递的 Json 文件只包含:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
然后我创建另一个角色,该角色应该是任务角色,以使容器能够从 S3 读取数据
aws iam wait role-exists --role-name $task_role 2>/dev/null || \
aws iam --region $REGION create-role --role-name $task_role \
--assume-role-policy-document file://task-role.json || return 1
aws iam --region $REGION attach-role-policy --role-name $task_role \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess || return 1
在这种情况下,我传递的 json 是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
当我创建服务时,我还传递了一个 ecs-params.yml 文件
version: 1
task_definition:
task_role_arn: ${task_role}
task_execution_role: ${task_execution_role}
ecs_network_mode: awsvpc
task_size:
mem_limit: 0.5GB
cpu_limit: 256
run_params:
network_configuration:
awsvpc_configuration:
subnets:
- ${subnet1}
- ${subnet2}
security_groups:
- ${secgroupid}
assign_public_ip: ENABLED
我得到的错误是:
INFO[0016](服务仪表板)未能启动任务(错误 ECS 无法承担为此任务提供的角色“arn:aws:iam::accountID:role/dashboard_role”。请验证被传递的角色具有适当的信任关系和权限,并且您的 IAM 用户有权传递此角色。)。时间戳="2021-03-04 12:13:23 +0000 UTC"
我错过了什么?
【问题讨论】:
标签: amazon-web-services aws-fargate