以前に 1つのAWS Lambda関数でSPAフレームワーク作成 という記事を書いたが、当記事では API Gateway ではなく CloudFront を利用して似たような事をやってみる。
/css
/html
/js
・・・ CSS格納用
・・・ HTML格納用
・・・ JS格納用
/api
/css
/html
/js
・・・ Lambdaで処理
・・・ オリジン(S3)にリクエストさせる
・・・ 〃
・・・ 〃
注意)
edgelambda.amazonaws.com を assumable role しないと、
「The function execution role must be assumable with edgelambda.amazonaws.com as well as lambda.amazonaws.com principals.」と怒られる。
#TODO
Lambda@Edge では、Node.js Lambda 関数により返却するコンテンツをカスタマイズする事ができる。
Lambda 関数が実行出来るタイミングは以下の通り。
当記事では、上記の「オリジンリクエスト」イベントによってLambdaをトリガーし、動的コンテンツか静的コンテンツかを判定する。
動的コンテンツへのリクエストだった場合はLambd 内でレスポンスデータを作成/返却する。
静的コンテンツへのリクエストだった場合は何もしない。(そのままオリジンに対してリクエストさせる)