関数を使用してエッジでカスタマイズする
Amazon CloudFront では、独自のコードを記述して、CloudFront ディストリビューションプロセスが HTTP リクエストとレスポンスを処理する方法をカスタマイズできます。このコードは、レイテンシーを最小限に抑えるためにビューワー (ユーザー) の近くで実行するため、サーバーやその他のインフラストラクチャを管理する必要はありません。CloudFront を通過するリクエストとレスポンスの操作、基本認証と認可の実行、エッジでの HTTP レスポンスの生成などのコードを記述できます。
CloudFront ディストリビューションに記述してアタッチするコードは、エッジ関数と呼ばれます。CloudFront でエッジ関数の記述と管理をする方法は 2 つあります。
- CloudFront Functions
-
大規模でレイテンシーの影響を受けやすい CDN カスタマイズのための軽量な関数を JavaScript で記述できます。CloudFront Functions の runtime 環境は、起動時間が 1 ミリ秒未満、毎秒数百万のリクエストを処理するようにすぐにスケールでき、高い安全性を誇ります。CloudFront Functions は、CloudFront のネイティブ関数です。つまり、CloudFront 内でコードを完全に構築、テスト、デプロイできます。
- Lambda@Edge
-
Lambda@Edge は、複雑な関数および完全なアプリケーションロジックをビューワーに近い場所で実行するための強力で柔軟なコンピューティングを提供する、安全性に優れた AWS Lambda
の拡張機能です。Lambda@Edge 関数は、Node.js または Python runtime 環境で実行されます。これらの関数の発行先は単一の AWS リージョンですが、CloudFront ディストリビューションに関数を関連付けると、Lambda@Edge がコードを世界中に自動的にレプリケートします。
CloudFront で AWS WAF を実行する場合、AWS WAF の挿入されたヘッダーを CloudFront Functions と Lambda@Edge の両方で使用できます。これはビューワーとオリジンのリクエストとレスポンスで機能します。