

# 関数を使用してエッジでカスタマイズする
<a name="edge-functions"></a>

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](https://aws.amazon.com/lambda/) の拡張機能です。Lambda@Edge 関数は、Node.js または Python runtime 環境で実行されます。これらの関数の発行先は単一の AWS リージョンですが、CloudFront ディストリビューションに関数を関連付けると、Lambda@Edge がコードを世界中に自動的にレプリケートします。

CloudFront で AWS WAF を実行する場合、AWS WAF の挿入されたヘッダーを CloudFront Functions と Lambda@Edge の両方で使用できます。これはビューワーとオリジンのリクエストとレスポンスで機能します。

**Topics**
+ [CloudFront Functions と Lambda@Edge の違い](edge-functions-choosing.md)
+ [CloudFront Functions を使用してエッジでカスタマイズする](cloudfront-functions.md)
+ [CloudFront Connection Functions でカスタマイズする](customize-connections-validation-with-connection-functions.md)
+ [Lambda@Edge を使用してエッジでカスタマイズする](lambda-at-the-edge.md)
+ [エッジ関数に対する制限](edge-functions-restrictions.md)