使用 ECR 中部署的羽毛的 Docker R 脚本的 AWS 密钥和秘密

Posted

技术标签:

【中文标题】使用 ECR 中部署的羽毛的 Docker R 脚本的 AWS 密钥和秘密【英文标题】:AWS key and secret for Docker R script using feather deployed in ECR 【发布时间】:2022-01-21 14:10:06 【问题描述】:

所以在我的本地机器上这样的工作正常:

library(arrow)
library(aws.s3)

Sys.setenv(
    "AWS_ACCESS_KEY_ID" = Sys.getenv("awsaccesskey"),
    "AWS_SECRET_ACCESS_KEY" = Sys.getenv("awssecret"),
    "AWS_DEFAULT_REGION" = "eu-west-2"
)

feather_data <- s3read_using(read_feather, bucket = "amazingbucket", object = "somefile.feather")

如果我将其包装到 docker 映像中,并且我想避免硬编码 AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY,它们来自 Windows 环境变量,那么 ECR 如何获取此信息?

【问题讨论】:

【参考方案1】:

当您在 AWS 中运行此程序时,您可以将 IAM role 的概念附加到您的执行环境中。如果你在 ECS 上运行你的容器,你会attach to your task an IAM role。如果您在 EKS 中运行容器,您将使用 this method。

长话短说,AWS 将动态注入这些值(并且它会轮换临时凭据),并且 AWS 开发工具包将能够自动获取该信息。

【讨论】:

AWS Secrets Manager 也是一种选择吗? 也许您可以考虑使用 Secrets Manager 来托管这些凭证,但通常我们建议将其用于非 AWS 机密(我们无法控制其生命周期的机密)。对于 AWS 机密,“角色”模式绝对是使用最广泛的模式。

以上是关于使用 ECR 中部署的羽毛的 Docker R 脚本的 AWS 密钥和秘密的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes

Github 操作将 docker 部署到 AWS ECS ECR

elasticbeanstalk 和 ecr 中的 docker 映像存在问题

跨账户 ECR 登录和推送构建的 Docker 映像的 CodePipeline 错误

Docker 容器在使用 AWS ECR 的 AWS ECS 中不起作用

将映像从 aws ecr 部署到 aws elastic beanstalk