it-swarm.com.ru

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

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

Желаемый:

  1. Запустить экземпляр EC2
  2. SSH в
  3. Вытащить кусок статического контента из частного хранилища S3

Шаги:

  1. Создать роль IAM
  2. Раскрутить новый экземпляр EC2 с указанной выше ролью IAM; SSH в
  3. Задайте учетные данные с помощью aws configure и сведения, которые (успешно) заполнили в http://169.254.169.254/latest/meta-data/iam/security-credentials/iam-role-name
  4. Попытайтесь использовать 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

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

14
jterry

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

aws configure

... и предоставляя информацию, найденную в автоматически сгенерированном профиле роли.

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

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

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

14
jterry

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

 

A client error (403) occurred when calling the HeadObject operation: Forbidden

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

12
Don Law

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

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

Еще одна путевая проволока. Черт!

8
David Tonhofer

Я только что получил эту ошибку, потому что у меня была старая версия 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

3
pwaller

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

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

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

работал просто отлично. Совсем не проблема с разрешениями, а просто создание ключа.

2
Chris Snyder

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

How it should look

1
Learning stats by example

tl; dr: подстановка диких карт для меня работала лучше в s3cmd.

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

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

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

0
BradChesney79