LoginSignup
5
4

【AWS】CloudFront Functions,Lambda@Edgeについて

Posted at

はじめに

CloudFrontを使ったリダイレクト処理を実装するにあたり、CloudFront Functions,Lambda@Edgeの2つの選択肢があったので違いをまとめました。
image.png

目次

  1. CloudFront Functionsとは
  2. Lambda@Edgeとは
  3. CloudFront FunctionsとLambda@Edgeの違い
  4. ビューワリクエストとは
  5. ビューワレスポンスとは
  6. オリジンリクエストとは
  7. オリジンレスポンスとは

CloudFront Functionsとは

実行時間が1ミリ秒未満と非常に短いですが、毎秒数百万のリクエストを処理することができます。
実装はCloudFrontの画面で行い、JavaScriptで記載します。
作成したコードはCloudFrontにデプロイする前にテストが可能で、デプロイもワンクリックで完了します。
作成したFunctionsはCloudFrontのパスパターンを定義する際に紐づけることができます。
注意点として、ビューワーリクエスト、ビューワーレスポンスにのみ紐づけが可能です。

Lambda@Edgeとは

CloudFront内で実行できるLambdaです。
CloudFrontと組み合わせることでエッジロケ-ションごとにコンテンツを切り替えたり、接続元IPによってレスポンスを指定することが可能です。

CloudFront FunctionsとLambda@Edgeの違い

この2つを使い分けを考えた場合は『実行時間』が特に大きな違いになるかと思います。
少しでも時間がかかる処理の場合はLambda@Edgeになります。
よく使いそうな項目を表にしましたが、さらに詳しい情報はこちらをご参照ください

CloudFront Function Lambda@Edge
実行場所 エッジロケーション エッジキャッシュ
リクエスト/レスポンス ビューワリクエスト
ビューワレスポンス
ビューワリクエスト
ビューワレスポンス
オリジンリクエスト
オリジンレスポンス
ランタイム JavaScript
(ECMAScript5.1準拠)
Python
Node.js
最大実行時間 1ミリ秒未満 ビューワトリガー:5秒
オリジントリガー:30秒
スケール量 毎秒1000万リクエスト 毎秒1万リクエスト
処理可能データ リクエスト
レスポンスヘッダ
リクエスト
レスポンスヘッダ
本文

ビューワリクエストとは

キャッシュ内にリクエストされたオブジェクトがあるか確認する前に関数を実行します。

ビューワレスポンスとは

リクエストされたファイルがビューワーに返される前に関数を実行します。
キャッシュ内にリクエストされたオブジェクトが既に存在したかどうかに関係なく、関数が実行されます。
以下の場合はビューワーレスポンスの関数が実行されないので注意が必要です。

  • オリジンが HTTP ステータスコードとして 400 以上を返した場合。
  • カスタムエラーページが返された場合。
  • ビューワーリクエストイベントによってトリガーされた関数からレスポンスが生成された場合。
  • CloudFront で HTTP リクエストが自動的に HTTPS にリダイレクトされる場合 ([ビューワープロトコルポリシー] の値が [Redirect HTTP to HTTPS] の場合)

オリジンリクエストとは

現時点ではLambda@Edgeのみ使用可能です。
CloudFrontが受け付けたリクエストをオリジンに転送するタイミングで関数を実行します。
※リクエストをオリジンに転送する場合にのみ実行されます。そのため、キャッシュ内にデータがある場合はオリジンへの転送が行われないため関数も実行されません。

オリジンレスポンスとは

現時点ではLambda@Edgeのみ使用可能です。
オリジンからのレスポンスをキャッシュする前に関数を実行します。

さいごに

CloudFrontを使ったリダイレクトや構築については社内ブログの方で取り上げようと思っていますので気になる方は覗いていただけると嬉しいです。
今回はメモっぽい感じになりましたが以上になります。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4