我正在尝试构建 Docker 镜像,我需要将一些文件从 S3 复制到镜像。
在我正在使用的 Dockerfile 中:
Dockerfile
FROM library/ubuntu:16.04
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# Copy files from S3 inside docker
RUN aws s3 COPY s3://filepath_on_s3 /tmp/
但是,aws
需要 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY。
我知道我可以使用 ARG
传递它们。但是,在构建时将它们传递给镜像是不是一个坏主意?
如何在不将 key 存储在镜像中的情况下实现此目的?
最佳答案
在我看来,Roles 是将 S3 权限委派给 Docker 容器的最佳方式。
从 IAM 创建角色 -> 角色 -> 创建角色 -> 选择将使用此角色的服务,选择 EC2 -> 下一步 -> 选择 s3policies 并创建角色。
从 Actions-> Instance Settings -> Attach/Replace Role 将角色附加到正在运行/停止的实例
这在 Dockerfile 中成功运行:
运行 aws s3 cp s3://bucketname/favicons/var/www/html/favicons --recursive
关于amazon-web-services - Dockerfile 从 amazon s3 或其他需要凭据的来源复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51409209/