2016-09-14 4 views
1

Я пишу сценарий powershell для загрузки файла с URL-адреса s3. Я продолжаю получать (403) Запретную ошибку. Команда я используюЗагрузить с s3 по url

Invoke-WebRequest -Uri "http://bucketname.s3.amazonaws.com/file.txt" 

экземпляр EC2 имеет IAM роль, связанную с ним, который имеет доступ к загрузке из s3 ведра. Я успешно запускаю команды (cp, ls и т. Д.) С помощью aws cli. Это проблема с полномочиями, которые я передаю с запросом? Нужно ли мне передавать данные AWS с этим запросом?

+1

Я считаю, что S3 использует 'https', а не' http'. – wOxxOm

+0

Я исправил эту благодарность! – PrestonM

ответ

2

Когда вы используете командлет Invoke-WebRequest так, как вы, вы не передаете учетные данные S3. Поэтому, несмотря на то, что вы находитесь в экземпляре EC2, авторизованном для загрузки файла, Amazon S3 этого не знает.

При использовании AWS CLI он отправляет учетные данные вместе с запросом.

У вас есть несколько вариантов:

  1. сделать файл общественности в S3. Это позволит вашему командлету работать как есть. Но тогда любой сможет его скачать.
  2. Используйте AWS SDK для загрузки файла. Как вы уже сказали, он работает нормально.
  3. Используйте AWS SDK для генерации предварительно подписанного URL-адреса, затем вы можете использовать Invoke-WebRequest с указанным выше URL-адресом для загрузки файла.
  4. Отправить учетные данные с помощью вашего вызова Invoke-WebRequest. Я бы не рекомендовал это, потому что вы просто изобретаете колесо.
Смежные вопросы