簡體   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