CloudFront Functions を使用したエッジでのカスタマイズ
CloudFront Functions を使用すると、JavaScript で軽量な関数を記述し、レイテンシーの影響を受けやすい CDN カスタマイズを大規模に実行できます。関数を使用して、CloudFront を通過するリクエストとレスポンスの操作、基本認証と承認の実行、エッジでの HTTP レスポンスの生成などを行うことができます。CloudFront Functions の runtime 環境は、起動時間が 1 ミリ秒未満、毎秒数百万のリクエストを処理するようにすぐにスケールでき、高い安全性を誇ります。CloudFront Functions は、CloudFront のネイティブ関数です。つまり、CloudFront 内でコードを完全に構築、テスト、デプロイできます。
CloudFront Functions は、次のような軽量で実行時間の短い関数に最適です。
-
キャッシュキーの正規化: HTTP リクエスト属性 (ヘッダー、クエリ文字列、Cookie、さらには URL パス) を変換して、最適なキャッシュキーを作成できます。これにより、キャッシュのヒット率を向上させることができます。
-
ヘッダー操作: リクエストまたはレスポンスで HTTP ヘッダーを挿入、変更、または削除できます。たとえば、すべてのリクエストに
True-Client-IP
ヘッダーを追加できます。 -
ステータスコードの変更と本文の生成 — ヘッダーを評価し、カスタマイズされたコンテンツでビューワーに返すことができます。
-
URL リダイレクトまたは書き換え: リクエスト内の情報に基づいてビューワーを他のページにリダイレクトしたり、すべてのリクエストをあるパスから別のパスに書き換えたりできます。
-
リクエストの承認: 承認ヘッダーやその他のリクエストメタデータを調べることで、JSON ウェブトークン (JWT) などのハッシュ化された承認トークンを検証できます。
CloudFront 関数を CloudFront ディストリビューションに関連付けると、CloudFront が CloudFront エッジロケーションでリクエストとレスポンスをインターセプトし、この関数に送ります。以下のイベントが発生したら、CloudFront Functions を呼び出すことができます。
-
CloudFront がビューワーからリクエストを受信したとき (ビューワーリクエスト)
-
CloudFront がビューワーにレスポンスを返す前 (ビューワーレスポンス)
簡単な概要については、「チュートリアル: CloudFront Functions を使用した単純な関数の作成」を参照してください。
キー値ストアに保存されているキーと値のペアを使用するように関数を設定することで、CloudFront Function に変数を含めることができます。CloudFront Function にキーと値のペアを含める方法の簡単な説明については、「チュートリアル: キー値を含む関数の作成」を参照してください。
関数コードの記述を開始し、サンプルコードを参考にするには、「関数コードの記述」および「コードの例」を参照してください。