CloudFront Functions と Lambda@Edge の違い - Amazon CloudFront

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 秒 (オリジンリクエスト、オリジンレスポンス)

関数の最大メモリサイズ

2 MB

128 MB (ビューワーリクエスト、ビューワーレスポンス)

10,240 MB (10 GB) (オリジンリクエスト、オリジンレスポンス)

詳細については、「Lambda@Edge のクォータ」を参照してください。

関数コードと含まれるライブラリの最大サイズ 10 KB

50 MB (ビューワーリクエスト、ビューワーレスポンス)

50 MB (オリジンリクエスト、オリジンレスポンス)

ネットワークアクセス いいえ はい
ファイルシステムへのアクセス いいえ はい
リクエスト本文へのアクセス いいえ はい
位置情報とデバイスデータへのアクセス あり

いいえ (ビューワーリクエスト、ビューワーレスポンス)

はい (オリジンリクエスト、オリジンレスポンス)

CloudFront でビルドとテストをすべて実施可能 はい いいえ
関数のログとメトリクス はい はい
料金表 無料利用枠あり。リクエストごとに課金。 無料利用枠なし。リクエストと機能期間ごとに課金。