我想提高部署的安全性,即將密鑰存儲在安全的地方。EC2上的Docker無法連接到S3
所以我跟着這個教程:How to Manage Secrets for Amazon EC2 Container Service–Based Applications by Using Amazon S3 and Docker 但是,如果沒有CloudWatch的模板(我已經有一個VPC,羣集等情況下) 我用我自己的項目(A瓶的應用程序,在工作與祕密工作正常定義)
我設置了S3存儲桶,VPC端點,一切正常。 但是,當我的搬運工集裝箱輪,我得到了一個錯誤:
download failed: s3://[my-bucket]/[my-secrets].txt to - An error occurred (403) when calling the HeadObject operation: Forbidden
當入口點腳本運行命令
aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
注意哪些基本情況:我的任務定義定義SECRETS_BUCKET_NAME,以及其他變量不需要保密。
首先,我認爲我的實例沒有正確的角色,因此出於調試目的,我將其附加到了AdministratorAccess策略中,但沒有成功。
其次,我讀到Docker容器共享主機(EC2實例)的憑證,所以我直接在實例上安裝aws-cli軟件包併爲具有AdministratorAccess策略的用戶設置憑據。現在
我可以在我的情況下登錄時,在命令
aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
手動運行和正常工作,但我的容器中仍然得到403錯誤。
我的EC2實例是一個AMZN-AMI-2017.03.c - 亞馬遜ECS-優化的圖像(其古怪,不包括AWS-CLI)
如果有人有什麼,我做錯了一個想法...
附加到您正在運行的容器並運行'env',看看SECRETS_BUCKET_NAME是否在容器中定義? –
'SECRET_BUCKET_NAME'被定義,我在運行命令之前進行檢查。 「碼頭檢查[集裝箱]」顯示它也在那裏。 – CloC
使用'docker run --net = host'作爲你的容器,看看它是否工作? –