EC2上的Docker无法连接到S3

我想提高部署的安全性,将密钥存储在安全的地方。

所以我遵循本教程: 如何使用Amazon S3和Dockerpipe理基于Amazon EC2容器服务的应用程序的秘密但是,如果没有CloudWatch模板(我已经有了VPC,集群和其他实例),我正在使用自己的项目(A与任务定义中的秘密一起工作的Flask应用程序)

我设置了S3存储桶,VPC端点,一切正常。 但是当我的docker集装箱启动时,我得到一个错误:

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,以及不需要保密的其他variables。

首先,我认为我的实例没有正确的angular色,所以出于debugging目的,我附加了它的pipe理员访问策略,但没有成功。

其次我读Docker容器共享主机(EC2实例)的凭据,所以我直接安装在aws-cli包的实例上,并为具有AdministratorAccess策略的用户设置凭据。

现在我可以手动运行时,在我的实例上login命令

 aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt - 

它工作正常,但我的容器仍然得到了403错误。

我的EC2实例是一个amzn-ami-2017.03.c-amazon-ecs-optimized图像(奇怪的是,不包括aws-cli)

如果有人知道我做错了什么…

解决了!

我将AMI更新为更新的版本,重新设定了适当的angular色,并且工作。

我注意到了一个奇怪的事情:ECS优化亚马逊的AMI不包括aws-cli。