Как получить доступ к S3 на AMI в 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 Identity and Access Management (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. Создайте новый экземпляр EC2, который определяет роль IAM.
  6. Создайте свое приложение с помощью одного из AWS SDK. Не указывайте учетные данные при вызове методов, поскольку SDK автоматически добавляет временные учетные данные.

Ниже я упоминаю, что я сделал для каждого из пунктов выше.

  1. Готово
  2. Я не могу добавить доверительные отношения. Я выбираю сервисную роль "Amazon EC2", и "Шаг 3: Установите доверие" автоматически заполняется для меня

введите описание изображения здесь

3 и 4. Я прикрепляю политику "AmazonS3FullAccess"

  1. Я запустил новый экземпляр EC2, в котором указана роль, созданная в (1)

Тем не менее, я не уверен, что означает (6)?

Создайте свое приложение с помощью одного из AWS SDK. Не указывайте учетные данные при вызове методов, поскольку 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, которое работает на JVM внутри док-контейнера.

0 ответов

Другие вопросы по тегам