目次

概要

以前に 1つのAWS Lambda関数でSPAフレームワーク作成 という記事を書いたが、当記事はこれを API Gateway を利用せず CloudFront を利用した場合の一例として記載する。

説明

  • 静的コンテンツ(HTML、CSS、JS等) はS3に配置する。
  • 動的コンテンツは Lambda で提供する。
  • 動的コンテンツへのリクエストの場合は、Lambda@Edge を使用してレスポンスを返却する
  • 作成する Lambda は1つのみとし、リクエスト情報から処理を判定する。(Lambda内部でルーティング)

補足

Lambda@Edge では、Node.js Lambda 関数により返却するコンテンツをカスタマイズする事ができる。

Lambda 関数が実行出来るタイミングは以下の通り。

  • CloudFront がビューワーからリクエストを受信したとき (ビューワーリクエスト)
  • CloudFront がリクエストをオリジンに転送する前 (オリジンリクエスト)
  • CloudFront がオリジンからレスポンスを受信したとき (オリジンレスポンス)
  • CloudFront がビューワーにレスポンスを返す前 (ビューワーレスポンス)

当記事では、上記の「オリジンリクエスト」イベントによってLambdaをトリガーし、動的コンテンツか静的コンテンツかを判定する。
動的コンテンツへのリクエストだった場合はLambd 内でレスポンスデータを作成/返却する。
静的コンテンツへのリクエストだった場合は何もしない。(そのままオリジンに対してリクエストさせる)

[参考]
CloudFront Lambda@Edge での AWS Lambda の使用
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-edge.html

Lambda@Edge を使用したエッジでのコンテンツのカスタマイズ
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html

Lambda@Edge を使用したエッジでのコンテンツのカスタマイズ » リクエストとレスポンスを使用する
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-generating-http-responses.html

イメージ

TODO:

料金試算

TODO:

準備

TODO:

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS