如何在AWS Marketplace中的AMI上访问S3?

时间:2016-12-15 16:40:17

标签: amazon-web-services amazon-s3 aws-marketplace

我正在为我的应用程序创建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但是,我无法理解如何做他们的建议。他们建议如下:

  1. 创建新的实例角色。
  2. 添加一个允许ec2.amazonaws.com承担的信任关系 作用。
  3. 创建一个指定所需权限的新策略。
  4. 将新策略添加到新实例角色。
  5. 创建一个指定IAM角色的新EC2实例。
  6. 使用其中一个AWS开发工具包构建您的应用。不要指定凭据 调用方法时,因为临时凭证将自动进行 由SDK添加。
  7. 下面我提一下我为上述每一点所做的工作。

    1. 完成
    2. 我无法添加信任关系。我选择“亚马逊EC2”服务角色,“我自动填写”步骤3:建立信任“
    3. enter image description here

      3和4.我附上“AmazonS3FullAccess”政策

      1. 我启动了一个新的EC2实例,它指定了在(1)
      2. 中创建的角色

        但是,我不确定(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上运行。

0 个答案:

没有答案