簡単な点を見逃していた場合は、あらかじめご容赦ください。 React から AWS API Gateway 経由で AWS Lambda に画像を送信することに成功しました。同じLambda関数のs3バケットにアップロードしました。以下は React コードです:
リーリーAPI Gateway で、以下に示すように Lambda プロキシ転送を有効にし、バイナリ イメージ形式を有効にしました
Lambdaプロキシ設定
API ゲートウェイのバイナリ設定
ここで奇妙な部分が始まります...少なくとも私にとっては... 私のPythonバックエンドコードには次のものがあります:
リーリーしかし、これを行う必要があることがわかります:
リーリー私は頭がおかしいと思ったので、Postman にアクセスし、curl コマンドをコピーし、次のようにコマンド プロンプトからバイナリ データを送信するように変更しました。 リーリー
正常に動作します。データを Base64 エンコードする必要がありますが、見たところ、API Gateway またはチェーン内の何かがすでにそれを行っています。私が何か間違ったことをしているかどうか、そしてそれをより良い方法で行う必要があるかどうかを教えてください。
それでは、この記事をご覧ください https://aws.amazon.com/blogs/compute/handling-binary-data-using-amazon-api-gateway-http-apis/,エンコードは「content-type」ヘッダーに基づいて決定されるようです。 Lambda 関数で次のコードを使用し、CloudWatch ログの結果を表示することで、Python バックエンド コードを表示できます。
print("isBase64Encoded: %s" % イベント['isBase64Encoded'])