CloudFront Functions と Lambda@Edge の選択 - Amazon CloudFront

CloudFront Functions と Lambda@Edge の選択

CloudFront Functions と Lambda@Edge は、どちらでもCloudFront イベントに応答してコードを実行できます。しかし、両者には大きな違いがあります。この違いが分かれば、ユースケースに適したものを選択するのに役立ちます。次の表は、CloudFront Functions と Lambda@Edge の重要な違いを示しています。

CloudFront Functions Lambda@Edge
プログラミング言語 JavaScript (ECMAScript 5.1 準拠) Node.js と Python
イベントソース
  • ビューワーリクエスト

  • ビューワーレスポンス

  • ビューワーリクエスト

  • ビューワーレスポンス

  • オリジンリクエスト

  • オリジンレスポンス

Scale リクエスト数: 毎秒 10,000,000 件以上 リクエスト数: 1 リージョンあたり毎秒 10,000 件まで
関数の持続時間 サブミリ秒

最大 5 秒 (ビューワーリクエスト、ビューワーレスポンス)

最大 30 秒 (オリジンリクエスト、オリジンレスポンス)

最大メモリ 2 MB 128 ~ 3,008 MB
関数コードと含まれるライブラリの最大サイズ 10 KB

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

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

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

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

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

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

CloudFront Functions は、次のような軽量で実行時間の短い関数に最適です。

  • キャッシュキーの正規化: HTTP リクエスト属性 (ヘッダー、クエリ文字列、Cookie、さらには URL パス) を変換して、最適なキャッシュキーを作成できます。これにより、キャッシュのヒット率を向上させることができます。

  • ヘッダー操作: リクエストまたはレスポンスで HTTP ヘッダーを挿入、変更、または削除できます。たとえば、すべてのリクエストに True-Client-IP ヘッダーを追加できます。

  • URL リダイレクトまたは書き換え: リクエスト内の情報に基づいてビューワーを他のページにリダイレクトしたり、すべてのリクエストをあるパスから別のパスに書き換えたりできます。

  • リクエストの承認: 承認ヘッダーやその他のリクエストメタデータを調べることで、JSON ウェブトークン (JWT) などのハッシュ化された承認トークンを検証できます。

CloudFront Functions の使用を開始するには、「CloudFront Functions を使用したエッジでのカスタマイズ」を参照してください。

Lambda@Edge は、次のシナリオに適しています。

  • 完了までに数ミリ秒以上かかる関数。

  • 調整可能な CPU またはメモリを必要とする機能。

  • サードパーティーライブラリに依存する関数 (AWS SDK を含む、AWS のその他サービスとの統合用)。

  • 処理に外部サービスを使用するためにネットワークアクセスが必要となる関数。

  • ファイルシステムへのアクセスまたは HTTP リクエストの本文へのアクセスを必要とする関数。

Lambda@Edge の使用を開始するには、「Lambda@Edge を使用したエッジでのカスタマイズ」を参照してください。