将 IAM 角色传递给 EC2 上的 Docker 容器的建议方法是什么?
我有一个在 EC2 上的码头工人环境中运行的 mlflow 项目。python代码需要从S3读取和写入。以下是错误(有时其他类型的错误也指示没有来自容器的 s3 访问,例如 s3 未找到错误(
botocore.exceptions.ProfileNotFound: The config profile (xxx) could not be found
为了解决 s3 访问问题,我已经创建了一个允许访问存储桶的 IAM 角色。
将此角色赋予 Docker 容器的最佳方法是什么?是否可以在Dockerfile
中定义角色名称?
谢谢
如果您使用 ECS 在 EC2 实例上运行容器,则可以在任务定义中设置 taskRoleArn。如果您在没有 ECS 的 EC2 上运行 docker,则可以为实例分配角色并使用--net host
容器应使用 ec2 实例的角色。
我在 EC2 上使用 docker,我刚刚创建了一个实例配置文件。
如果您使用控制台:
Instances -> CHOOSE YOUR INSTANCE -> Actions -> Instance Settings -> Attach/Replace IAM Role
如果您使用 CloudFormation:
EC2Instance:
Type: AWS::EC2::Instance
Properties:
IamInstanceProfile: !Ref EC2InstanceIAMInstanceProfile
...