我创建了一个 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"
我错过了什么?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句