授予 aws s3 对 fargate 集群的读取权限

布鲁维奥

我创建了一个 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"

我错过了什么?

马克乙

您可以为 ECS Fargate 任务分配两个 IAM 角色。“任务执行角色”,它允许ECS部署您Fargate任务,而“任务角色”,它可以让你的容器中运行代码,以使对AWS API调用。

除了任务执行角色之外,检查您是否有分配给 Fargate 任务定义的任务角色,并将 S3 权限添加到任务角色而不是任务执行角色。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

AWS S3 试图了解授予策略的权限

您如何允许授予对上载到AWS S3的对象的公共读取访问权限?

AWS:无法通过s3存储桶策略授予s3访问权限

通过AWS PHP SDK向IAM用户授予对AWS S3文件的权限

我应该授予什么 aws 权限来访问其他 s3 存储桶

如何授予AWS用户访问s3存储桶托管的网站的权限?

向 Cognito 用户授予对 aws S3 的读/读访问权限

将文件上传到AWS S3并授予公共访问权限

在AWS S3中,如果文件已经存在,我如何授予账户权限

尝试使用aws-cdk授予s3 Log Delivery Group的完全权限

向没有AWS账户的用户授予对AWS S3存储桶/文件夹的访问权限

如何在授予公共访问权限的情况下将文件上传到AWS S3?

如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

Fargate和SSM的AWS权限

授予访问权限以读取Amazon S3存储桶中的子目录

对在Amazon S3中通过PutObjectRequest上传的对象授予读取权限

您希望何时授予对 s3 存储桶的公共读取访问权限

S3:如何授予对多个存储桶的访问权限?

根据角色名称授予对S3资源的访问权限

S3向用户授予对象访问权限

AWS:S3 存储桶 AWS 您无法授予公共访问权限,因为此帐户已启用阻止公共访问设置

是否可以使用存储桶策略授予对AWS S3中另一个账户拥有的对象的访问权限?

S3存储桶AWS您无法授予公共访问权限,因为已为此帐户启用了阻止公共访问设置

AWS CDK授予对堆栈外部资源的权限

AWS RDS-Oracle-授予sys权限

授予对MSysObjects的读取权限

从在 VPC 内创建的 ECS-fargate 任务调用 AWS 服务 [s3、DynamoDB、kinsesis]

AWS S3 对象权限

AWS S3 CloudFormation 只读权限