URL, чтобы получить файл из Amazon S3 - PullRequest
41 голосов
/ 28 октября 2011

У меня возникли проблемы с поиском доступа к файлу из Amazon S3. Допустим, корзина, в которой находится файл, это BUCKET_NAME, файл FILE_NAME и т. Д. Я пробовал следующие два URL:

https://s3.amazonaws.com/BUCKET_NAME/FILE_NAME/
?Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

Но это дает мне следующую ошибку: NoSuchKey Указанный ключ не существует.

и я тоже попробовал

https://s3.amazonaws.com/BUCKET_NAME/
?Key=FILE_NAME
&Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

но это возвращает веб-страницу со списком всех файлов в данном сегменте (включая FILE_NAME), а не конкретный файл, который я хочу. Я также попытался добавить «Action = GetObject» в URL, но это ничего не меняет.

Было бы полезно выяснить, какой (если есть) правильный метод и что я делаю неправильно. Я уже некоторое время копался в документации на Amazon, но не могу разобраться с этим.

Спасибо.

Ответы [ 4 ]

56 голосов
/ 28 октября 2011

Это на самом деле сформулировано больше как:

https://<bucket-name>.s3.amazonaws.com/<key>

См. здесь

21 голосов
/ 16 сентября 2015

Документация здесь , и в качестве примера я буду использовать регион Франкфурта.

2 разных стиля URL:

Но этот URL не работает:

Сообщение является явным: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

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

20 голосов
/ 02 июля 2014

Возможно, не то, что было после ОП, но для тех, кто ищет URL, просто получить доступ к читаемому объекту на S3 больше похоже на:

https://<region>.amazonaws.com/<bucket-name>/<key>

Где <region> это что-то вроде s3-ap-southeast-2.

Нажмите на элемент в графическом интерфейсе S3, чтобы получить ссылку на ваше ведро.

0 голосов
/ 09 января 2019

Как сказал @stevebot, сделайте следующее:

https://<bucket-name>.s3.amazonaws.com/<key>

Одна важная вещь, которую я хотел бы добавить, заключается в том, что вы либо должны сделать ваши объекты корзины общедоступными, либо вы можете добавить собственную политику в свою политику корзины. Эта пользовательская политика может разрешать трафик из диапазона IP-адресов вашей сети или с другими учетными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...