Я могу создать такой заранее подписанный URL
import boto3
s3 = boto3.client('s3')
url = s3.generate_presigned_url( ClientMethod='list_objects', Params={'Bucket':'bucket-name'} )
# now get the listing
import requests
r = requests.get(url)
# r.status_code is 200
# Problem: r.text output is in XML format
Когда я делаю прямой вызов s3.list_objects(Bucket='bucket-name')
, я получаю ответ в формате JSON. При создании URL-адреса нет возможности указать тип контента. Я попытался обновить заголовки запроса с помощью accept: application/json
, но это привело к ошибке «SignatureDoesNotMatch» от AWS.
В конечном итоге я буду использовать URL-адрес на стороне клиента с javascript. Этот пример просто иллюстрирует проблему.
Как получить ответ в формате JSON при использовании заранее подписанного URL-адреса (желательно с использованием boto)? Похоже, это должно быть возможно.
Accept: application/json
, а неContent-Type:
. Однако S3 не генерирует ответы в формате JSON. - person Michael - sqlbot   schedule 24.05.2016Accept
, но ничего не вышло. - person lps   schedule 24.05.2016