我正在为我的应用程序创建AMI并将其放在AWS Marketplace上。我的应用程序需要访问存储上传到我的应用程序的文档的S3存储桶。启动我的应用程序时,我请求用户输入访问密钥,密钥和存储桶名称,如下所示:
docker run -d --name ourcontainername -e UPLOAD_ACCESS=<access_key> -e UPLOAD_SECRET=<secret_key> -e UPLOAD_BUCKET=<bucket> ourimagename
但是,AWS Marketplace似乎不允许这种做法。
但是,对于AWS Marketplace,我们要求应用程序作者使用 AWS身份和访问管理(IAM)角色,不允许 使用访问或秘密密钥。
我正在阅读此文档,该文档提出了使用IAM角色的方法:https://d0.awsstatic.com/whitepapers/strategies-for-managing-access-to-aws-resources-in-aws-marketplace.pdf但是,我无法理解如何做他们的建议。他们建议如下:
下面我提一下我为上述每一点所做的工作。
3和4.我附上“AmazonS3FullAccess”政策
但是,我不确定(6)是什么意思?
使用其中一个AWS开发工具包构建您的应用。不要指定 调用方法时的凭据,因为临时凭证会 由SDK自动添加。
在我创建的新实例上,当我做
时[ec2-user@ip-172-31-42-131 ~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<rolename>
我可以看到ACCESS_KEY,SECRET_KEY和TOKEN。我的应用程序应该使用这些吗?
FWIW,我的应用程序是一个Grails应用程序,它在Docker容器内的JVM上运行。