CloudFront (BYOCDN)
この設定により、エージェント型トラフィック(AI ボットおよびLLM ユーザーエージェントからのリクエスト)がEdge Optimize バックエンドサービス(live.edgeoptimize.net)にルーティングされます。 通常どおり、人間の訪問者とSEO ボットは、元のページから引き続き提供されます。 設定をテストするには、設定が完了した後、応答でヘッダーx-edgeoptimize-request-idを探します。
前提条件
CloudFront設定を設定する前に、次のことを確認してください。
- Web サイトを提供する既存のCloudFront ディストリビューション。
- Lambda関数、IAM ロール、CloudFront ディストリビューション、およびキャッシュポリシーを作成するためのAWS IAM権限。
- LLM Optimizer UIから取得したEdge Optimize API キー。 手順については、API キーの取得を参照してください。
- (オプション)ステージング ルーティングをテストするには、 ステージング API キーを参照してください。
手順1: Edge Optimize Originの作成
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] > 「配信元」タブ
-
「原点を作成」をクリックします。
-
オリジンを設定します。
- オリジンドメイン:
live.edgeoptimize.net - 名前:
EdgeOptimize_Origin
- オリジンドメイン:
-
その他のすべてのフィールドをデフォルト値のままにします。
-
カスタムヘッダーを追加:
table 0-row-2 1-row-2 2-row-2 ヘッダー 値 x-edgeoptimize-api-keyあなたのAPI キー x-forwarded-hostwww.example.comwww.example.comを実際のweb サイトドメインに、そしてYour API keyをAdobe担当者から提供されたEdge Optimize API キーに置き換えます。 -
「原点を作成」をクリックします。
手順2: ビューアリクエスト関数を作成
ナビゲーション: AWS コンソール > CloudFront >関数
-
「関数を作成」をクリックします。
-
設定:
- 名前:
edgeoptimize-routing - 実行時間:
cloudfront-js-2.0
- 名前:
-
デフォルトコードをviewer-request.jsのコードに置き換えます。
公開する前に、コードで次の値をカスタマイズします。
YOUR_DEFAULT_ORIGIN– 既存のデフォルトのオリジンの名前に置き換えます(CloudFront/ディストリビューション/[ ディストリビューション ]/オリジン タブにあります)。TARGETED_PATHS– すべてのHTML ページをターゲットにするか、特定のパスの配列(例:['/', '/products', '/about'])に設定するには、nullに設定します。
-
変更を保存 > 関数を公開をクリックします。
手順3: キャッシュポリシーの設定
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] >動作
現在ビヘイビアーにアタッチされているキャッシュポリシーを確認します。 行動の 編集 をクリックし、キャッシュキーとオリジンリクエスト セクションを確認して、シナリオを特定します。
- シナリオ A (レガシー): 「レガシーキャッシュ設定」というラベルのラジオボタンが選択されています。 ポリシー名のドロップダウンはなく、インライン TTLとヘッダーの設定が表示されます。
- シナリオ B (カスタムポリシー):自分またはチームが作成したポリシー名で キャッシュポリシー が選択されています(AWSが提供するポリシーではありません)。
- シナリオ C (管理ポリシー):
CachingOptimized、CachingDisabled、CachingOptimizedForUncompressedObjectsなど、AWSが提供する名前で キャッシュポリシー が選択されています。これらは編集できません。
シナリオ A:従来のキャッシュ設定
ビヘイビアーで従来のキャッシュ設定を使用している場合:
-
キャッシュキーとオリジンリクエストの下に、レガシーキャッシュ設定が選択されています。
-
x-edgeoptimize-configとx-edgeoptimize-urlを Headers 許可リストに追加します。- ドロップダウンから「次のヘッダーを含める」を選択します。
x-edgeoptimize-configとx-edgeoptimize-urlを追加します。
「ヘッダー」ドロップダウンで「すべて」が既に選択されている場合は、この手順をスキップしてください。すべてのヘッダーが自動的にオリジンに転送されます。
-
「オブジェクトキャッシュ」設定を確認します。
- カスタマイズに設定されている場合は、最小TTLを
0に設定することをお勧めします。 ただし、現在の最小TTLがすでに非常に短い場合は、変更する必要がない可能性があります。 - オリジンキャッシュヘッダーを使用に設定した場合、変更は必要ありません。
- カスタマイズに設定されている場合は、最小TTLを
-
「変更を保存」をクリックします。
シナリオ B:カスタムキャッシュポリシーを持つレガシー以外
ビヘイビアーで既にカスタムキャッシュポリシーを使用している場合(作成したカスタムキャッシュポリシーではなく、AWSが管理するポリシーを使用している場合):
ナビゲーション: AWS コンソール / CloudFront / ポリシー/ キャッシュ
-
既存のポリシーをクリックします。
-
「編集」をクリックします。
-
最小TTLを
0に設定することをお勧めします。 ただし、現在の最小TTLがすでに非常に短い場合は、変更する必要がない可能性があります。
-
キャッシュキー設定 > ヘッダーの下に、既存のインクルージョンと共に
x-edgeoptimize-configとx-edgeoptimize-urlを追加します。
-
「変更を保存」をクリックします。
シナリオ C:管理対象(AWS) キャッシュ ポリシーを持つレガシー以外
ビヘイビアーでAWS マネージドキャッシュポリシー(例:CachingOptimized)を使用している場合、それを編集することはできません。 既存のマネージドポリシー設定を複製し、上部にEdge Optimize ヘッダーを追加する新しいカスタムキャッシュポリシーを作成する必要があります。
パート 1:現在のマネージド キャッシュ ポリシー設定を書き留めます
ナビゲーション: AWS コンソール / CloudFront / ポリシー/ キャッシュ
-
現在ビヘイビアーに添付されているマネージドキャッシュポリシー(例:
CachingOptimized)を検索してクリックします。 -
既存のすべての設定をメモします。
- 最小TTL、最大TTL、デフォルト TTL
- キャッシュキーに含まれるヘッダー
- キャッシュキーに含まれるCookie
- キャッシュキーに含まれるクエリ文字列
- 圧縮サポート(Gzip、Brotli)
パート 2:同じ設定で新しいカスタム キャッシュ ポリシーを作成する+ Edge Optimize config
ナビゲーション: AWS コンソール / CloudFront / ポリシー/ キャッシュ
-
「キャッシュポリシーの作成」をクリックします。
-
名前:
edgeoptimize-cache -
パート 1に記載されているすべての設定を、次の変更を加えてレプリケートします。
- 最小TTLを
0に設定することをお勧めします。 ただし、現在の最小TTLがすでに非常に短い場合は、変更する必要がない可能性があります。
- キャッシュキー設定 > ヘッダーの下で、管理ポリシーが持つすべてを含め、さらに
x-edgeoptimize-configとx-edgeoptimize-urlを追加します。
- 最小TTLを
-
「作成」をクリックします。
-
ビヘイビアーに戻り、新しく作成したポリシーを関連付けます。
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] >動作
- 行動の編集:
- キャッシュキーとオリジンリクエストで、キャッシュポリシーを選択します。
- ドロップダウンから「
edgeoptimize-cache」を選択します。 - 「変更を保存」をクリックします。
ステップ 4: Lambda@Edge関数を作成します(オリジンのリクエストと応答)
us-east-1 (バージニア北部)地域 で作成する必要があります。 これはAWSの要件です。 関数がus-east-1で作成されたとしても、AWSは自動的に世界中のすべてのCloudFront エッジロケーションにレプリケートするため、ビューアに最も近いエッジロケーションで実行されます。 続行する前に、AWS Consoleのus-east-1 リージョンにいることを確認してください。Lambda関数を作成
ナビゲーション: AWS コンソール > Lambda
-
「関数を作成」をクリックします。
-
作成者をゼロから選択します。
-
設定:
- 関数名:
edgeoptimize-origin - その他のすべてのフィールドをデフォルト値のままにします。
- 関数名:
-
「関数を作成」をクリックします。
-
コードエディターで、デフォルトコードをorigin-request-response.jsのコードに置き換えます。
-
「デプロイ」をクリックして、コードを保存します。
-
設定/権限 (例:
edgeoptimize-origin-role-xxxxx)の下に表示されている 実行ロール名 に注意してください。 次の手順で必要になります。
実行ロールの信頼ポリシーを更新する
自動作成された役割はlambda.amazonaws.comのみを信頼します。 Lambda@Edgeの場合は、edgelambda.amazonaws.comも追加する必要があります。
ナビゲーション: AWS コンソール > IAM > ロール > [前の手順のロール ] > 「信頼関係」タブ
-
「信頼ポリシーを編集」をクリックします。
-
ポリシーをtrust-policy.jsonのコンテンツに置き換えます。
-
「ポリシーを更新」をクリックします。
edgelambda.amazonaws.com サービス プリンシパルは、Lambda@Edgeに 必須 です。 これを使用しない場合、CloudFrontはエッジの場所で関数を呼び出すことはできません。CloudWatch Logs権限ポリシーの修正
自動作成された役割には、通常のLambda用に設定されたAWSLambdaBasicExecutionRole ポリシーが付属しています。このポリシーには、Lambda@Edgeのリージョンとロググループ名が間違っています。 それを更新する必要があります。
ナビゲーション: AWS コンソール > IAM > ロール > [自分のロール ] >権限タブ >添付されたポリシー名をクリックします(例:AWSLambdaBasicExecutionRole-xxxx)
-
「編集」をクリックします。
-
ポリシーをcloudwatch-policy.jsonのコンテンツに置き換えます。
JSONで、
ACCOUNT_IDを実際のAWS アカウント ID (AWS コンソールの右上隅)に、FUNCTION_NAMEをLambda関数の名前(例:edgeoptimize-origin)に置き換えます。 -
「変更を保存」をクリックします。
*である必要があります – Lambda@Edgeはビューアに最も近いエッジの場所で実行されるので、ログはエッジの場所の領域(例:ap-south-1、eu-west-1)でCloudWatchに書き込まれます。必ずしもus-east-1ではありません。 ロググループは、領域接頭辞が付いた名前を使用します:/aws/lambda/us-east-1.FUNCTION_NAME。us-east-1は常に関数のホーム領域です。バージョンを公開
-
関数ページで、アクション (右上)/新しいバージョンを公開をクリックします。
-
説明を追加します。
-
「公開する」をクリックします。
-
関数ARNをコピーまたはメモします。次の手順で必要になります。
手順5:関数とキャッシュ ポリシーをビヘイビアーに関連付ける
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] >動作
-
行動の編集:
-
手順3 (シナリオ C)で新しいキャッシュポリシーを作成した場合は、キャッシュポリシーを
edgeoptimize-cacheに設定します。
-
関数の関連付けで、次を設定します。
- 閲覧者の要求:
edgeoptimize-routing - オリジンリクエスト: ステップ 4のバージョン付き関数ARN (バージョンの公開で)
- 発信元の応答: ステップ 4のバージョン付き関数ARN (バージョンの公開で)
- 閲覧者の要求:
-
「変更を保存」をクリックします。
ファイアウォール ルールを使用してEdgeで最適化を許可する(オプション)
CDNでWAFまたはBot Managerを使用している場合:
-
WAFまたはBot Managerで
*AdobeEdgeOptimize/1.0*ユーザーエージェントを許可リストに加えるして、Optimize at Edge サービスがオリジンコンテンツを取得できるようにします。 -
ファイアウォールでユーザーエージェント以外の追加の検証が必要な場合は、秘密鍵(例:
openssl rand -hex 32)を生成し、次の操作を行います。- ルーティングルールのシークレットを他の
x-edgeoptimize-*ヘッダーと共にx-edgeoptimize-fetcher-keyを追加します。 - WAFまたはBot Manager ルールを追加して、
x-edgeoptimize-fetcher-keyが同じシークレットと一致するリクエストを許可します。
- ルーティングルールのシークレットを他の
-
Edgeで最適化すれば、このヘッダーをそのまま転送できます。ユーザーは鍵のライフサイクル全体を所有しています。
手順6:設定のテスト
1. ボットトラフィックのテスト (最適化する必要があります)
エージェント型ボットユーザーエージェントでリクエストを送信します。 最初のリクエストで、Edge Optimizeがページを処理およびキャッシュする際に、プロキシ化された(最適化されていない)応答を返す場合があります。 応答のx-edgeoptimize-proxy: 1 ヘッダーでこれを識別できます。
エージェント型ユーザーエージェントを使用してAI ボットリクエストをシミュレートします。
curl -svo /dev/null https://www.example.com/page.html \
--header "user-agent: chatgpt-user"
応答が成功すると、x-edgeoptimize-request-id ヘッダーが含まれ、リクエストがEdge Optimizeを通じてルーティングされたことが確認されます。
< HTTP/2 200
< x-edgeoptimize-request-id: 50fce12d-0519-4fc6-af78-d928785c1b85
2. 人間のトラフィックをテストします(影響を受けません)
通常のヒューマンブラウザーリクエストをシミュレートします。
curl -svo /dev/null https://www.example.com/page.html \
--header "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
応答には、notにx-edgeoptimize-request-id ヘッダーを含める必要があります。 Edgeで最適化を有効にする前に、ページの内容と応答時間を同じにしておく必要があります。
3. 2つのシナリオを区別する方法
x-edgeoptimize-request-idx-edgeoptimize-fo1)トラフィックルーティングのステータスは、LLM Optimizer UIでも確認できます。 顧客設定に移動し、CDN設定 タブを選択します。
4. ログが正しく流れていることを確認する
上記のテストリクエストを実行した後、CloudFront関数とLambda@Edge関数の両方にログが書き込まれていることを確認します。
CloudFront関数ログ (edgeoptimize-routing)
ナビゲーション: AWS コンソール / CloudWatch / ロググループ(us-east-1またはCloudFront ディストリビューションが設定されているリージョン)
-
/aws/cloudfront/function/edgeoptimize-routingという名前のロググループを探します。 -
最新のログストリームを開きます。
-
エージェント型リクエストの場合は、次のようなエントリが表示されます。
Adding origin group for userAgent: chatgpt-userRouting to Edge Optimize origin for userAgent: chatgpt-user
-
エージェント以外のリクエストの場合は、次を参照してください。
Routing to Default origin for userAgent: ...
AWS コンソール/CloudFront/関数/edgeoptimize-routingの「指標」タブで、呼び出し数とエラー率を確認することもできます。
Lambda@Edge ログ (edgeoptimize-origin)
us-east-1ではなく、リクエストを処理したエッジの場所 の 領域でCloudWatchに書き込まれます。 curl コマンドを実行した場所に最も近いAWS リージョンのCloudWatchを確認します。ナビゲーション: AWS コンソール/CloudWatch/ロググループ(正しいリージョンに属していることを確認してください)
-
/aws/lambda/us-east-1.edgeoptimize-originという名前のロググループを探します。 -
最新のログストリームを開きます。
-
エージェント型リクエストの場合は、次のようなエントリが表示されます。
Calling Edge Optimize Origin for agentic requests— プライマリパスCalling Default Origin in case of failover for agentic requests— フェールオーバーパスFailover Triggered for agentic requests— origin-response フェールオーバー検出
ロググループが存在しない場合は、手順4でIAM権限が正しく更新されていることを確認します。 また、近くにある他のAWS リージョンも確認してください。リクエストを提供したエッジの場所は、想定したものとは異なる場合があります。
トラブルシューティング
x-edgeoptimize-request-idがありませんYOUR_DEFAULT_ORIGINが正しく置き換えられたことを確認します(手順2)。x-edgeoptimize-api-key ヘッダー値を確認します(手順1)。us-east-1ではなく、リクエストを提供したエッジ領域に表示されます。cache-control: no-storeを尊重していません0に設定します(手順3)。 最小値のTTLがすでに非常に短い場合は、この問題が発生しない可能性があります。EdgeでのOptimizeの無効化と再有効化
Lambda@Edge関数(edgeoptimize-origin)は、CloudFront ビヘイビアーのオリジン要求イベントおよびオリジン応答イベントに関連付けられます。 Lambda@Edgeの停止は、その動作を通過するあらゆるリクエスト(人間とエージェントの両方)に対してインラインで実行されるので、エージェントのリクエストだけでなく、すべてのライブトラフィックに影響します。 Lambda@Edgeの停止を検出した場合は、すぐに関数の関連付けを削除して、通常のトラフィックフローをデフォルトのオリジンに戻します。
Lambda@Edgeの障害を検出する方法
- AWS Service Health Dashboard — AWS CloudFrontまたは AWS Lambda に影響を与えるアクティブなインシデントについては、Amazon Service Health Dashboardを確認してください。 ここで報告されるグローバルまたはリージョンの障害は、問題が設定ではなくAWS インフラストラクチャ側にあることを確認する最速の方法です。
- Lambda@Edge errors — AWS コンソール / CloudFront / モニタリング / [ ディストリビューション]に移動します。 「Lambda@Edge errors」タブを開き、実行エラー グラフで実行エラーを確認します。 これらの値が高い場合は、Lambda@Edgeがダウンしている可能性があります。
Lambda@Edge関数のデタッチ
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] >動作
-
ビヘイビアーで「編集」をクリックします。
-
関数の関連付け セクションまでスクロールします。
-
次の関連付けを 関連付けなし に設定します。
table 0-row-2 1-row-2 2-row-2 3-row-2 イベント 変更先 Viewer リクエスト 関連付けなし オリジンリクエスト 関連付けなし オリジンレスポンス 関連付けなし -
「変更を保存」をクリックします。
-
CloudFront ディストリビューションのデプロイが完了するのを待ちます。 ステータスが デプロイ から最終変更日に変更されます(通常は数分以内)。
デプロイが完了すると、すべてのトラフィックルートがデフォルトのオリジンに直接送信されます。 設定は削除されません。Lambda関数とその関連付けはいつでも復元できます。
Lambda@Edge関数を再アタッチしています
ナビゲーション: AWS コンソール > CloudFront > ディストリビューション > [ ディストリビューション ] >動作
-
ビヘイビアーで「編集」をクリックします。
-
関数の関連付け セクションまでスクロールします。
-
関連付けを復元:
table 0-row-2 1-row-2 2-row-2 3-row-2 イベント に設定 Viewer リクエスト edgeoptimize-routing(CloudFront関数)オリジンリクエスト 手順4のバージョン管理されたLambda ARN オリジンレスポンス 手順4のバージョン管理されたLambda ARN 手順4でメモしたバージョン管理された Function ARN を使用します(バージョンの公開で)。
-
「変更を保存」をクリックします。
-
ディストリビューションのデプロイが完了するのを待ってから、エージェンティック要求が手順6で説明されているように
x-edgeoptimize-request-idヘッダーを返すことを確認します。
利用可能なオポチュニティ、自動最適化ワークフロー、FAQなど、Edgeでの最適化について詳しくは、Edgeでの最適化の概要に戻ります。