使用 Boto3 无法在 Fargate 容器内找到凭据

Mar*_*cha 8 python amazon-web-services docker

我正在尝试创建一个容器来分割文件,然后将它们上传到 S3 容器。该过程按预期工作,但是当尝试将文件发送到 S3 时,它失败并出现错误Unable to locate credentials inside fargate container

我的 dockerfile 如下所示:

FROM python:3.8-slim

RUN apt-get update \
    && apt-get install -y wget \
    && rm -rf /var/lib/apt/lists/*

RUN mkdir /tmp/splitter

RUN pip install --upgrade pip && \
    pip install --no-cache-dir requests boto3

RUN wget -O /tmp/init.sh (WHATEVER) \
    && chmod +x /tmp/init.sh

CMD /tmp/init.sh
Run Code Online (Sandbox Code Playgroud)

我的角色设置类似于Amazon 文档中出现的 ecsTaskExecutionRole 。

Mar*_*cin 11

ecsTaskExecutionRole不适用于您的容器访问 S3。ECS 本身能够从 ECR 中提取 docker 镜像。

对于容器中的应用程序权限,您需要任务角色,而不是任务执行角色。这可能会令人困惑,因为两者的名称相似并且具有相同的信任策略。

任务角色可以与任务执行角色一起指定:

在此输入图像描述

还可以在任务定义级别设置角色:

在此输入图像描述

  • 感谢您的回答,我终于开始工作了。我终于明白了任务执行角色和实际任务角色之间的区别。非常感谢您的帮助,祝您有美好的一天! (2认同)