Статический контент для AWS EC2 с ролью IAM

Чтение через /many/ресурсов о том, как использовать временные учетные данные AWS в запущенном экземпляре EC2, я не могу получить чрезвычайно простой POC.

Желаемая:

  • Запустите экземпляр EC2
  • SSH в
  • Вытяните кусок статического содержимого из частного ведра S3.

Шаги:

  • Создайте роль IAM
  • Создайте новый экземпляр EC2 с указанной выше ролью IAM; SSH в
  • Задайте учетные данные, используя aws configure, и данные, которые (успешно) заполнены в http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
  • Попытка использовать AWS CLI для доступа к файлу
Роль

IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::bucket-name/file.png"
    }
  ]
}

Когда я использую AWS CLI для доступа к файлу, эта ошибка возникает:

A client error (Forbidden) occurred when calling the HeadObject operation: Forbidden
Completed 1 part(s) with ... file(s) remaining

Какой шаг я пропустил?

Ответы

Ответ 1

Для дальнейшего использования проблема заключалась в том, как я вызывал AWS CLI; ранее я запускал:

aws configure

... и предоставление сведений, найденных в автогенерированном профиле роли.

Как только я просто разрешил ему находить свои собственные временные учетные данные и просто указывал только другой требуемый параметр вручную (регион):

aws s3 cp s3://bucket-name/file.png file.png --region us-east-1

... файл потянулся. Надеюсь, это поможет кому-то в будущем!

Ответ 2

Надеюсь, это поможет кому-то другому Гуглеру, который приземляется здесь.

A client error (403) occurred when calling the HeadObject operation: Forbidden
Ошибка

также может быть вызвана, если ваши системные часы слишком далеки. Раньше я был 12 часов в прошлом и получил эту ошибку. Установите часы в пределах минуты истинного времени, и ошибка исчезла.

Ответ 3

Согласно Предоставление доступа к единому ведомому S3 с использованием Amazon IAM, может потребоваться применить политику IAM к двум ресурсам:

  • Собственное ведро (например, "arn: aws: s3: 4ormat-knowledge-base" )
  • Все объекты внутри ведра (например, "arn: aws: s3: 4ormat-knowledge-base/*" )

Еще одна поездка. Черт!

Ответ 4

Я только что получил эту ошибку, потому что у меня была старая версия awscli:

Брокен:

$ aws --version aws-cli/1.2.9 Python/3.4.0 Linux/3.13.0-36-generic

Работает:

$ aws --version aws-cli/1.5.4 Python/3.4.0 Linux/3.13.0-36-generic

Ответ 5

Вы также получите эту ошибку, если ключ не существует в ведре.

Дважды проверьте ключ - у меня был script, который добавлял дополнительную косую черту в начале ключа, когда он добавлял POSTed элементы в ведро. Итак:

aws s3 cp --region us-east-1 s3://bucketname/path/to/file /tmp/filename

не удалось выполнить "Ошибка клиента (запрещена) при вызове операции HeadObject: Запрещено."

Но это:

aws s3 cp --region us-east-1 s3://bucketname//path/to/file /tmp/filename

работал отлично. Не проблема вообще, просто создание головокружения.

Ответ 6

У меня была эта ошибка, потому что я не прикреплял политику к моему пользователю IAM.

How it should look

Ответ 7

tl; dr: файловое файловое картографирование в файле s3cmd улучшилось для меня.

Как круто, как aws-cli - для моей одноразовой проблемы с файлами S3, которая не срабатывала сразу, как я бы надеялся, и думал, что это возможно... Я закончил установку и использование s3cmd.

Независимо от того, какой синтаксис и за кулисами работает я концептуально воображаемый, s3cmd был более интуитивным и приспособлялся к моим запеченным в предвзятиях.

Возможно, это не тот ответ, на который вы пришли сюда, но это сработало для меня.