当前位置: 首页 > 知识库问答 >
问题:

AWS ECS Docker容器Boto3 IAM权限

卫乐童
2023-03-14

我正在尝试使用AWS ECS在docker容器中运行boto3 python脚本。我的脚本需要访问SQS(获取

为了让docker容器在我的本地机器上运行,我能够使用以下docker run命令将我的aws凭据传递到docker容器中。

<代码>docker run-v ~/。aws:/root/。aws

最近ECS宣布:

亚马逊ECS现在支持任务的IAM角色。为任务指定IAM角色时,其容器可以使用最新版本的AWS CLI或SDK向授权的AWS服务发出API请求。了解更多信息

我将任务IAM角色附加到该任务,但在运行该任务时出现以下错误:

无法运行任务ECS无法承担为此任务提供的角色。请验证正在传递的角色是否具有正确的信任关系和权限,以及您的IAM用户是否具有传递此角色的权限

任何想法都将不胜感激。

共有2个答案

云何平
2023-03-14

Boto3使用botocore库作为其API函数,并且它允许每个Boto3版本有一系列botocore版本,因此即使您有最新的Boto3版本,您也可能没有最新的botocore。

从1.4.37版开始,Botocore支持任务的ECS IAM角色,因此如果您将环境中的底层botocore更新到至少该版本,您应该能够使用任务的ECS IAM角色功能。

贺奕
2023-03-14

看起来Boto现在支持IAM任务角色,但无论如何,这将是Boto客户端尝试发出请求时的问题,而不是尝试启动任务时的问题。

此处的问题在错误消息中定义。要么:

1) 您的用户没有为任务角色定义的iam:PassRole权限。可以通过编辑用户的策略来添加,使其具有类似于以下内容的语句:

{
  "Effect": "Allow",
  "Action": "iam:PassRole",
  "Resource": "arn:aws:iam::<account>:role/<role name>"
}

2)您尝试分配给任务的任务角色没有适当的信任关系。将以下信任策略添加到ECS任务角色中,以确保它可以由任务承担。

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
 类似资料:
  • 问题内容: 如果我以特权模式运行容器,它是否具有所有内核功能,还是需要单独添加它们? 问题答案: 实际上,以特权模式运行确实为容器提供了所有功能。但是,最好始终给容器提供所需的最低要求。 如果您查看Docker文档,它们也会引用此标志: 完整的容器功能(特权) --privileged标志为容器提供了所有功能,并且还解除了设备cgroup控制器强制执行的所有限制。换句话说,容器可以完成主机可以做的

  • 我想构建一个具有根权限的jenkins docker容器,这样我就可以获得安装gradle的功能。 我使用这个命令在8080端口上运行jenkins,但我还想添加gradle作为环境变量: 或者我需要创建什么dockerfile,写什么,这样jenkins也可以在8080开始运行

  • 我的Dockerfile配置: 报错信息: 我已经尝试过以下几种方法: Dockerfile配置中添加RUN chmod -R 777 /yice Dockerfile配置添加 USER root,它会报: 找不Chrome,然后因为ghcr.io/puppeteer/puppeteer:latest镜像切换的用户名为pptruser,所以我手动在代码里给puppeteer配置executable

  • 本文向大家介绍Docker创建容器时目录权限踩坑,包括了Docker创建容器时目录权限踩坑的使用技巧和注意事项,需要的朋友参考一下 昨天写项目时需要用到Mysql的衍生版本percona, 就想用Doker来安装.结果踩了一晚上坑, 今早终于解决. 现记录在此. 这个坑原因是我对linux的目录权限问题不敏感导致的. 我的系统是ubuntu16.04, 运行 docker pull percona

  • 问题内容: 我正在Dockerfile中创建一个文件夹,我想给它一个写许可权。但是我尝试执行此操作时遇到权限拒绝错误 我的错误是 如何授予对Docker容器内的app文件夹的写权限 问题答案: 我猜您正在切换到没有所有权来更改/ app目录权限的用户“ admin”。使用“ root”用户更改所有权。在Dockerfile下面为我工作- PS-尝试摆脱“ 777”权限。我暂时尝试在Dockerfi

  • 我正在使用Docker Compose运行多个容器,包括一个带有Postgres映像的容器。我正在尝试向该容器添加一个卷,以跨容器构建持久化我的数据。但是,当它尝试在容器中为该卷创建目录时,我收到了一个错误。 我运行: 然后 docker compose up 我收到以下错误: 错误:对于cxbenchmark\u db\u 1,无法启动服务db:oci运行时错误:container\u linu