繁体   English   中英

IAM 角色 + Boto3 + Docker 容器

[英]IAM Role + Boto3 + Docker container

据我所知,boto3 将尝试从实例元数据服务加载凭据。 如果我在 EC2 实例中运行此代码,我预计不会有任何问题。 但是当我的代码被 dockerized 时,boto3 将如何找到元数据服务?

Amazon ECS 代理填充AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量,该变量可用于获取凭证。 这些特殊变量仅用于使用 PID 1 进行处理。 Dockerfile ENTRYPOINT指定的脚本获取 PID 1。

有多种联网模式,其他联网模式的详细信息可能会有所不同。 更多信息可以在: 如何在 Amazon ECS 中配置 IAM 任务角色以避免“访问被拒绝”错误?

对于awsvpc网络模式如果您使用 PID 1 运行printenv ,您会看到类似以下内容:

AWS_EXECUTION_ENV=AWS_ECS_FARGATE                                                                                                                                        
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=/v2/credentials/0f891318-ab05-46fe-8fac-d5113a1c2ecd                                                                              
HOSTNAME=ip-172-17-0-123.ap-south-1.compute.internal                                                                                                                     
AWS_DEFAULT_REGION=ap-south-1                                                                                                                                            
AWS_REGION=ap-south-1                                                                                                                                                    
ECS_CONTAINER_METADATA_URI_V4=http://169.254.170.2/v4/2c9107c385e04a70b30d3cc4d4de97e7-527074092                                                                         
ECS_CONTAINER_METADATA_URI=http://169.254.170.2/v3/2c9107c385e04a70b30d3cc4d4de97e7-527074092                                                                            

调试某些东西也很棘手,因为在 SSH 进入容器后,您使用的 PID 不是 1,这意味着如果您手动运行需要获取凭据的服务可能无法这样做。

ECS 任务元数据端点文档

在您的机器中的 ~/.aws 中找到 .aws 文件夹并将其移动到 Docker 容器的 /root 文件夹。

.aws 包含具有 AWS KEY 和 AWS PW 的文件。 您可以通过docker cp ~/.aws <containder_id>:/root轻松地将它从本地机器复制到当前正在运行的容器中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM