ファイルをアップロードするためのAPIを設定した後、画像(jpg)をアップロードする特別なケースがあり、 APIが、あなたは、次のエラーを取得:奇妙なことは、単純なテキストファイルをアップロードすると、まったく同じAPIコールで動作することで、その後、私は変更する必要が唯一のものはAWS APIゲートウェイを使用して画像をアップロードする方法ProxyとS3との統合
Content-Type 'text/plain'
ある
The request signature we calculated does not match the signature you
provided. Check your AWS Secret Access Key and signing method.
Consult the service documentation for details.
The Canonical String for this request should have been
'PUT /test/vi-dummy-bucket/testImg2.jpg
content-type:application/x-www-form-urlencoded
host:qhweyos7z2.execute-api.us-west-1.amazonaws.com
x-amz-date:20170808T154441Z
x-amz-security-token: // security token string no quotes
content-type;host;x-amz-date;x-amz-security-token 5fa90f0 ...'
The String-to-Sign should have been
'AWS4-HMAC-SHA256\n20170808T154441Z
20170808/us-west-1/execute-api/aws4_request
f7a38fa ...'
とリクエストの生の部分にテキストを書きます。
コンテンツタイプの問題かリクエストボディの問題であるかどうかはわかりませんが、すべてを作業状態(本文のテキスト/プレーン&テキスト)にして、本文をバイナリに変更してイメージを設定すると、私は上記のエラーを取得します。
- マイAPIゲートウェイは、米国西部-1地域
- マイS3バケットは、私たち-東-1地域
であると私は使用していますリクエストは次のとおりです。
PUT /test/vi-dummy-bucket/testImg2.jpg HTTP/1.1
Host: qhwe7z2.execute-api.us-west-1.amazonaws.com
Content-Type: application/x-www-form-urlencoded
X-Amz-Security-Token: FQoDYX ...
X-Amz-Date: 20170808T154441Z
Authorization: AWS4-HMAC-SHA256
Credential=ASIAJICO6JFTJWN7A/20170808/us-west-1/execute-
api/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-
security-token,
Signature=6a792 ... Cache-Control: no-cache
Postman-Token: e9d1f730-f50b-7e27-70cc-c15a138d8cc6
これは別のバージョンのリクエストです(同じエラー):
PUT /test/vi-dummy-bucket/testImg2.jpg HTTP/1.1
Content-Type: image/jpeg
x-amz-security-token: FQoDY ...
x-amz-date: 20170808T190134Z
Authorization: AWS4-HMAC-SHA256
Credential=ASIAIZSP5YKVLJ3GVVQA/20170808/us-west-1/execute-
api/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-
security-token,
Signature=b2324 ...
Host: qhos7z2.execute-api.us-west-1.amazonaws.com
Connection: close
User-Agent: Paw/3.1.2 (Macintosh; OS X/10.12.6) GCDHTTPRequest
Content-Length: 823236
--- --- UPDATE
生成SDKを使用して手動sigining sigV4を実施した後、署名は、もはや問題ではありません。
残っている唯一の問題は、生成されたSDKが文字列を "本体"として受け入れることで、ファイルをバイナリ文字列に変換する必要があることです。次に、それは正しく渡され、ファイルはS3で作成されますが、バイナリ文字列がバイナリファイルに変換されなかったかのように、サイズは現在倍になり、表示されません。だからこそ...
私はすでにPASSTHROUGHとCONVERT_TO_BINARYを試しました。
を送信する必要があることを期待するものから、タイプは、私が最後に試したものです。 ^^ – WilliamX