2016-09-21 4 views
0

Ich versuche, einen direkten Upload von meiner iOS-App auf S3 mit einem pre-signed post from heroku. Heroku gibt die folgenden meine schnelle App:heroku S3 vor-signierten Post und S3 Anfrage Signatur

{'url': u'https://bucketname.s3.amazonaws.com/filename', 'data': {'url': u'https://bucketname.s3.amazonaws.com/', 'fields': {'Content-Type': 'm4a', 'key': u'filename', 'AWSAccessKeyId': u'XXXXXXXXXXXX', 'acl': 'public-read', 'policy': u'wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==', 'signature': u'qr647bMEA9M8LeBVqkJLcvEIO4g='}}}

Wie Sie sehen können, gibt es eine Signatur, die ist: qr647bMEA9M8LeBVqkJLcvEIO4g=

und eine Politik

wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==

In dem AWS documentation, das Signatur-Beispiel, das sie verwenden (unten) hat viel mehr Zeichen als die Signatur, die von Heroku

zurückgegeben wird

Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

Ist die von Heroku anders vorgesehen Signatur als das, was für amazon bittet einen Antrag zu unterschreiben? Soll ich nicht die Signatur verwenden, die von Heroku zurückgegeben wird?

Antwort

1

5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7 in Hexadezimal- und qr647bMEA9M8LeBVqkJLcvEIO4g= ist in Base64-Kodierung und ist viel kürzer als hex da base64 64 Zeichen für die Codierung verwendet, während hex 16 Zeichen verwendet.

AWS erwartet die Signatur in der base64-Codierung. Also, was Heroku zu dir zurückkehrt, ist richtig. Welche Probleme haben Sie?

+0

Ich versuche zum ersten Mal eine signierte Anfrage an S3 zu senden und kann keine Verbindung herstellen. Deshalb entschied ich mich, in der Dokumentation nachzusehen, ob ich etwas falsch mache. Ich erhalte derzeit einen HTTP-Fehlercode 400. Ich bin mir nicht sicher, ob ich die erforderlichen Werte im richtigen Format zur Verfügung stelle. – Brosef

+0

400 kann alles bedeuten. Die Antwort sollte mehr Informationen darüber haben, warum sie 400 zurückgibt. – helloV