- AWS Lambda@Edgeの概要情報をまとめる。
AWS Lambda@Edgeとは
- CloudFrontのエッジサーバーでコードを実行するLambda関数。
- ユーザーに近いロケーションでコードを実行することでアプリケーションのパフォーマンスを向上させる。
- CloudFrontのイベントをトリガーとしてコードを実行する。
用語・概念
トリガー
- Lambda関数の実行タイミング。
- 関数実行したいタイミングに応じて、選択する。
Viewer | Origin | |
---|---|---|
Request | CloudFront キャッシュが確認される前のタイミング。 すべてのリクエストで実行する。 |
リクエストがオリジンへ転送される前のタイミング。 キャッシュミスで実行する。 |
Response | オリジンまたはキャッシュからのレスポンスを受け取った後のタイミング。 すべてのリクエストで実行する。 |
オリジンからレスポンスを受け取った後のタイミング。 キャッシュミスで実行する。 |
作成の大まかな流れ
-
CloudFront ディストリビューションを作成する
-
関数を作成する※US-East-1 (バージニア北部) リージョンで作成
-
関数にCloudFront トリガーを追加する
サポートランタイム※20210207時点
- Python 3.8
- Python 3.7
- Node.js 12
- Node.js 10
- Node.js 8 および Node.js 6※作成済みのもののみ利用可能。
ユースケース
セキュリティ対応
- Lambda 関数をトリガーし、オリジン上のコードを変更せず、全てのオリジンレスポンスに HTTP セキュリティヘッダーを追加する。
エッジロケーションでの動的ウェブアプリケーション構築
- 他の AWS サービスと組み合わせることで、オートスケーリングやオリジンのインフラ管理作業なしで、自動的にスケールイン/アウトできるウェブアプリをエッジロケーションで構築する。
A/B テスト
デバイスに応じたレスポンスの返却
-
User-Agent
ヘッダーを確認し、ビューワーが使用するデバイスに基づいて、異なるオブジェクトをビューワーに返却できる。以下、例。 - デバイスの画面サイズに基づいて異なるイメージを返却する。
-
Referer
ヘッダーの値を考慮する関数を作成し、最も低い解像度のイメージをボットに返却する。
ユーザーの認証・認可
- ユーザーを認証および認可し、不正なリクエストをオリジンへ到達する前に除外できる。
- 例:Amazon Cognito などの認証およびユーザー管理サービスを呼び出し、ビューワーのリクエストを認証・認可させる。