serverless framework を使い、AWS Lambda や API Gateway を用いたシステムで、multipart/form-data 形式のデータを受け取る場合、日本語データのとき、文字化けが発生する。
元々AWS Lambda は、input / output に text を扱うようになっているので、バイナリデータとして送信される multipart/form-data に、何も設定しないままでは対応できない。
serverless framework を使うときは、まず serverless-apigw-binary を追加。
$ npm i serverless-apigw-binary
serverless.ts や serverless.yml に以下の項目を追加する事で、lambdaに渡すときにbase64エンコードされ、lambda上でアクセスするときには自動でデコードされる。
custom: { apigwBinary: { types: [ 'multipart/form-data', ] }, } // ...
plugins: [ 'serverless-apigw-binary', // ... ],