2017-08-24 150 views
0

我想提高部署的安全性,即將密鑰存儲在安全的地方。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)

如果有人有什麼,我做錯了一個想法...

+0

附加到您正在運行的容器並運行'env',看看SECRETS_BUCKET_NAME是否在容器中定義? –

+0

'SECRET_BUCKET_NAME'被定義,我在運行命令之前進行檢查。 「碼頭檢查[集裝箱]」顯示它也在那裏。 – CloC

+0

使用'docker run --net = host'作爲你的容器,看看它是否工作? –

回答

0

解決!

我將AMI更新爲更新的版本,重新設定了正確的角色,並且工作正常。

我注意到了一件奇怪的事情:ECS優化亞馬遜的AMI不包括aws-cli。