HTMLフォーム/ JavaScriptおよびAPIゲートウェイ統合を介して、すべてSAMテンプレートで定義されたS3バケットへの画像ファイルのアップロードを許可するはずのGoで書かれたLambda関数があります。
Lambda 関数の実行ログの例を次に示します。
ここでの問題は、JPEG または PNG ファイルの場合、破損した結果が得られることです。
- 結果の画像のファイル サイズ (メディア メッセージを解析すると得られるもの
multipart
) は、元のファイル サイズよりも大きくなります (例: 8kB (元の) から 12kB (S3 バケット))。 - 元の PNG または JPEG ファイルを S3 バケット内の結果のファイルと比較すると
hexdump
、ほとんど同じように見えます (つまり、base64 エンコーディングの問題が関係しているとは思えません)。 - 興味深いことに、
text/plain
このメディア タイプでは、この設定が機能します。
どこが壊れているのかを突き止めようとしましたが、現時点では、API Gateway の構成に欠けているものがあると思います。FWIW、私はこれを試しましたが、動作に目に見える変化はありません:
$ aws apigateway update-integration-response \
--rest-api-id XXX --resource-id XXX \
--http-method POST --status-code 200 \
--patch-operations op='replace',path='/contentHandling',value='CONVERT_TO_BINARY'`