CloudFront Functions と Lambda@Edge の違い
CloudFront Functions と Lambda@Edge は、どちらでもCloudFront イベントに応答してコードを実行できます。
CloudFront Functions は、以下のユースケースにおける軽量で実行時間の短い関数に最適です。
-
キャッシュキーの正規化 – HTTP リクエスト属性 (ヘッダー、クエリ文字列、Cookie、さらには URL パス) を変換して、最適なキャッシュキーを作成します。これにより、キャッシュのヒット率を向上させることができます。
-
ヘッダー操作 – リクエストまたはレスポンスに対する HTTP ヘッダーの挿入、変更、または削除を行います。たとえば、すべてのリクエストに
True-Client-IP
ヘッダーを追加できます。 -
URL リダイレクトまたは書き換え – リクエスト内の情報に基づいてビューワーを他のページにリダイレクトしたり、あるパスから別のパスにすべてのリクエストを書き換えたりします。
-
リクエストの承認 – 承認ヘッダーや他のリクエストメタデータを調べることで、JSON ウェブトークン (JWT) などのハッシュ化された承認トークンを検証します。
CloudFront Functions の使用を開始するには、「CloudFront Functions を使用してエッジでカスタマイズする」を参照してください。
Lambda@Edge は、以下のユースケースに最適です。
-
完了までに数ミリ秒以上かかる関数。
-
調整可能な CPU またはメモリを必要とする機能。
-
サードパーティライブラリに依存する関数 (他の AWS サービスとの統合のため、AWS SDK を含む)。
-
外部サービスを使用して処理するために、ネットワークアクセスを必要とする関数。
-
ファイルシステムへのアクセスまたは HTTP リクエストの本文へのアクセスを必要とする関数。
Lambda@Edge の使用を開始するには、「Lambda@Edge を使用してエッジでカスタマイズする」を参照してください。
次の表を使用して CloudFront Functions と Lambda@Edge の違いを理解すると、ユースケースのオプションを選択しやすくなります。
CloudFront Functions | Lambda@Edge | |
---|---|---|
プログラミング言語 | JavaScript (ECMAScript 5.1 準拠) | Node.js と Python |
イベントソース |
|
|
Amazon CloudFront KeyValueStore をサポートする |
あり CloudFront KeyValueStore は JavaScript ランタイム 2.0 のみをサポートします |
なし |
Scale | リクエスト数: 毎秒 10,000,000 件以上 | リクエスト数: 1 リージョンあたり毎秒 10,000 件まで |
関数の持続時間 | サブミリ秒 |
最大 5 秒 (ビューワーリクエスト、ビューワーレスポンス) 最大 30 秒 (オリジンリクエスト、オリジンレスポンス) |
最大メモリ 詳細については、「Lambda クォータ」を参照してください。 |
2 MB | 128 MB – 10,240 MB (10 GB) |
関数コードと含まれるライブラリの最大サイズ | 10 KB |
1 MB (ビューワーリクエスト、ビューワーレスポンス) 50 MB (オリジンリクエスト、オリジンレスポンス) |
ネットワークアクセス | いいえ | はい |
ファイルシステムへのアクセス | いいえ | はい |
リクエスト本文へのアクセス | いいえ | はい |
位置情報とデバイスデータへのアクセス | あり |
いいえ (ビューワーリクエスト、ビューワーレスポンス) はい (オリジンリクエスト、オリジンレスポンス) |
CloudFront でビルドとテストをすべて実施可能 | はい | いいえ |
関数のログとメトリクス | はい | はい |
料金表 | 無料利用枠あり。リクエストごとに課金。 | 無料利用枠なし。リクエストと機能期間ごとに課金。 |