LoginSignup
2
0

More than 5 years have passed since last update.

APIGateway + Lambda(Node)の Expressで画像が表示されない時の対応

Last updated at Posted at 2018-07-31

ApiGateway + LambdaのExpressで画像も配信したら表示されなかったのでその時の対応メモ

画像のヘッダを見るとcontent-typeがtext/jsonで配信で配信されていた。

https://github.com/awslabs/aws-serverless-express/issues/104
と同じ現象らしい

aws-serverless-expressの記述変更

まずaws-serverless-expressの記述を書き換える。

const server = awsServerlessExpress.createServer(app)

const binaryMimeTypes = [
  'image/png',
  'image/x-icon'
];
const server = awsServerlessExpress.createServer(app, null, binaryMimeTypes)

に変更した。
今回、faviconとpngしか使っていなかったので該当2つしか記述していないがjpgなど必要に応じて追加する感じ。

この状態でもう一度アップするとヘッダが変化し
content-typeがimage/pngで配信されるようになったが、まだ画像は表示されず。
今度はデータがBase64にエンコーディングされている。

どうもAPIGateway側でもバイナリメディアタイプの設定が必要らしい。

API Gatewayの設定

API Gatewayの設定のバイナリメディアタイプを追加してやる。

スクリーンショット 2018-07-21 15.00.40.png

スクリーンショット 2018-07-21 13.35.06.png
に変更してgzip圧縮もオンにした。変更後、設定変更ボタンを押して反映。
設定は保存されてるが変化なしでこの辺でハマりポイントになった。
この時点では設定が反映されないか反映に時間がかかるのか、もう一度ステージをデプロイすることで反映されるようになった。

これで画像が表示できるようになりました。

web画面でやる場合、手順と反映が明確出ないので余計な労力が要りますね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0