Ich bin in der Lageerhalten JSON Antwort AWS presigned URL
wie soimport 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
eine presigned URL zu erzeugen, wenn ich einen direkten Aufruf tun s3.list_objects(Bucket='bucket-name')
dann erhalte ich die Antwort in JSON. Es gibt keine Option zum Festlegen des Inhaltstyps beim Generieren der URL. Ich habe versucht, die Header der Anfrage mit accept: application/json
zu aktualisieren, aber das führt zu einem "SignatureDoesNotMatch" Fehler von AWS.
Letztendlich werde ich die URL-Client-Seite mit Javascript verwenden. Dieses Beispiel soll nur das Problem veranschaulichen.
Wie bekomme ich die Antwort in JSON bei Verwendung einer vordefinierten URL (vorzugsweise mit Boto)? Scheint so, als müsste es möglich sein.
Um eine API aufzufordern, die Antwort als JSON zurückzugeben, senden Sie normalerweise 'Accept: application/json' - nicht' Content-Type: '. S3 generiert jedoch keine JSON-Antworten. –
Ahh, richtig, ja, ich habe versucht, den 'Accept'-Header zu setzen und es hat nicht funktioniert. – lps