Статический контент для 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 был более интуитивным и приспособлялся к моим запеченным в предвзятиях.
Возможно, это не тот ответ, на который вы пришли сюда, но это сработало для меня.