amazon-web-services - Dockerfile 从 amazon s3 或其他需要凭据的来源复制文件

标签 amazon-web-services docker amazon-s3

我正在尝试构建 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 容器的最佳方式。

  1. 从 IAM 创建角色 -> 角色 -> 创建角色 -> 选择将使用此角色的服务,选择 EC2 -> 下一步 -> 选择 s3policies 并创建角色。

  2. 从 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/

相关文章:

amazon-web-services - 如何在不公开存储桶名称的情况下为自定义域生成 S3 预签名 URL

amazon-web-services - CodeBuild 不会将构建工件上传到 S3

java - 验证 geoJson 服务器响应的最简单方法是什么?

python - 在 Flask/Python 中处理表情符号的正确方法是什么?

python - 无法使用 python 解析 boto3 客户端 json 响应

amazon-web-services - 默认情况下,AWS RDS Aurora在不同区域之间进行复制时,为什么选择 “Multi-AZ Deployment”?

MySql - 错误代码 : 1932. 引擎中不存在表

python - Github Action flake8 失败 : f-string is missing placeholders

amazon-web-services - 如何在 AWS Cloudfront (S3) 上获取干净的 URL?

python - 使用策展人python API无法过滤和删除Elasticsearch的旧索引