Lambdaでzipを作ってレスポンスしてたけど解凍がうまくかなかった

起こったこと

LambdaでZipをつくって返却しようとしていたのだが、返却されたzipが解凍できなかった。

ハンドラーでやったこと

const buffer = zip.toBuffer();
return {
  statusCode: 200,
  headers: {
    "Content-Type": "application/zip",
    'Content-Disposition': 'attachment; filename=diff.zip',
  },
  body: buffer.toString("base64"),
  isBase64Encoded: true,
};

bufferをbase64エンコードして渡す + isBase64Encodedtrueにする。

CDKでやったこと

Apiゲートウェイのバイナリメディアタイプを設定する。

const api = new aws_apigateway.RestApi(this, `${pjName}-apigateway`, {
  restApiName: `${pjName}-apigateway`,
  binaryMediaTypes: ["application/zip"] // ここ
});

参考

stackoverflow.com