CloudFront (BYOCDN)
この設定により、エージェンティックトラフィック(AI ボットや LLM ユーザーエージェントからのリクエスト)がEdge Optimize バックエンドサービス(live.edgeoptimize.net)にルーティングされます。 人間の訪問者と SEO ボットは、通常どおりオリジンから提供され続けます。 設定をテストするには、セットアップが完了した後、応答でヘッダー x-edgeoptimize-request-id を探します。
前提条件
CloudFront 設定を行う前に、以下を確認します。
- Web サイトを提供する既存の CloudFront 配布。
- Lambda 関数、IAM ロール、CloudFront ディストリビューション、キャッシュポリシーを作成するためのAWS IAM 権限。
- LLM Optimizerのオンボーディングプロセスを完了しました。
- LLM Optimizerへの CDN ログ転送が完了しました。
- LLM Optimizer UI から取得されたEdge最適化 API キー。
API キーを取得する手順:
-
顧客設定 に移動し、「CDN 設定」タブを選択します。
-
「最適化をデプロイするための AI トラフィックルーティング」で、「最適化を AI エージェントにデプロイ」チェックボックスをオンにします。
-
API キーをコピーして、以下のルーティング設定手順に進みます。
note note NOTE この段階では、ステータスに、設定がまだ完了していないことを示す赤い十字が表示される場合があります。 これは想定されています。以下のルーティング設定を完了し、AI ボットトラフィックのフローが開始されると、ステータスが緑色のチェックマークに更新され、ルーティングが正常に有効であることが確認されます。
さらに、上記の手順に関するヘルプが必要な場合は、Adobe アカウントチームまたは llmo-at-edge@adobe.com に問い合わせてください。
手順 1:Edgeの原点の最適化を作成する
ナビゲーション: AWS コンソール/CloudFront/配布版/[ 自分の配布版 ]/「オリジン」タブ
-
原点を作成 をクリックします。
-
接触チャネルを設定します。
- 接触チャネルドメイン:
live.edgeoptimize.net - 名前:
EdgeOptimize_Origin
- 接触チャネルドメイン:
-
その他のフィールドはすべてデフォルト値のままにします。
-
カスタムヘッダーを追加:
table 0-row-2 1-row-2 2-row-2 ヘッダー 値 x-edgeoptimize-api-keyAPI キー x-forwarded-hostwww.example.comwww.example.comを実際の web サイトドメインに置き換え、Your API keyをAdobe担当者から提供されるEdge Optimize API キーに置き換えます。 -
原点を作成 をクリックします。
手順 2:ビューアリクエスト関数の作成
ナビゲーション: AWS コンソール/CloudFront/関数
-
関数を作成 をクリックします。
-
設定:
- 名前:
edgeoptimize-routing - Runtime:
cloudfront-js-2.0
- 名前:
-
デフォルトのコードを viewer-request.js のコードに置き換えます。
公開する前に、コードで次の値をカスタマイズします。
YOUR_DEFAULT_ORIGIN– 既存のデフォルトオリジンの名前に置き換えます(CloudFront/配布版/[ 配布版 ]/「オリジン」タブにあります)。TARGETED_PATHS– すべてのHTML ページを対象とする場合はnullに設定し、特定のパスの配列(例:['/', '/products', '/about'])に設定する場合はに設定します。
-
変更を保存/公開関数 をクリックします。
手順 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最適化設定を使用して、新しいカスタムキャッシュポリシーを作成する
ナビゲーション: 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 コンソールの 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 サービスプリンシパルは 必須 です。 これを使用しないと、CloudFront はエッジロケーションであなたの関数を呼び出すことができません。CloudWatch ログの権限ポリシーの修正
自動作成された役割には、通常のラムダ用に設定された AWSLambdaBasicExecutionRole ポリシーが付属していますが、このポリシーは、Lambda@Edgeに対して誤った地域とログ グループ名を持っています。 更新する必要があります。
ナビゲーション: AWSコンソール/IAM/役割/[ 自分の役割 ]/「権限」タブ/添付されたポリシー名(AWSLambdaBasicExecutionRole-xxxx など)をクリックします
-
「編集」をクリックします。
-
ポリシーを cloudwatch-policy.json のコンテンツに置き換えます。
JSON 内で、
ACCOUNT_IDを実際のAWS アカウント ID (AWS コンソールの右上隅にあります)に置き換え、FUNCTION_NAMEを Lambda 関数の名前(例:edgeoptimize-origin)に置き換えます。 -
変更を保存 をクリックします。
* である必要があります。Lambda@Edgeは、ビューアに最も近いエッジ位置で実行されるので、ログは必ずしも us-east-1 ードされるとは限らない、エッジ位置の領域(例:ap-south-1、eu-west-1)で CloudWatch に書き込まれます。 ロググループでは、領域のプレフィックスが付いた名前 /aws/lambda/us-east-1.FUNCTION_NAME を使用します。us-east-1 は常に関数のホーム領域です。バージョンの公開
-
関数ページで、アクション (右上)/新しいバージョンを公開 をクリックします。
-
説明を追加します。
-
「公開する」をクリックします。
-
Function ARN をコピーまたはメモします。これは次の手順で必要になります。
手順 5:関数とキャッシュポリシーを動作と関連付ける
ナビゲーション: AWS コンソール/CloudFront/配布版/[ 配布版 ]/ビヘイビアー
-
ビヘイビアーを編集します。
-
手順 3 (シナリオ C)で新しいキャッシュポリシーを作成した場合は、キャッシュポリシー を
edgeoptimize-cacheに設定します。
-
「関数の関連付け」で、次の項目を設定します。
- ビューアリクエスト:
edgeoptimize-routing - 接触チャネルリクエスト: 手順 4 の(バージョンを公開 内の)バージョン管理された関数 ARN
- オリジン応答:手順 4 の バージョン管理された関数 ARN (バージョンの公開)
- ビューアリクエスト:
-
変更を保存 をクリックします。
手順 6:設定をテストする
1. ボットトラフィックのテスト (最適化する必要があります)
エージェント ボットユーザーエージェントと共にリクエストを送信します。 最初のリクエスト において、Edge Optimize は、ページの処理およびキャッシュ中に、プロキシ化された(最適化されていない)応答を返す場合があります。 これは、応答の x-edgeoptimize-proxy: 1 ヘッダーで識別できます。
エージェント user-agent を使用して 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"
応答には、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
-
非 agentic リクエストの場合は、次のように表示されます。
Routing to Default origin for userAgent: ...
また、AWS コンソール/CloudFront/機能/edgeoptimize-routing で 指標 タブを確認して、呼び出し数とエラー率を表示することもできます。
Lambda@Edge件のログ (edgeoptimize-origin)
us-east-1 ではなく、リクエストを処理した edge ロケーションの地域 で 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— オリジン応答のフェイルオーバー検出
ロググループが存在しない場合は、手順 4 で IAM 権限が正しく更新されたことを確認します。 また、近くのAWS リージョンも確認してください。リクエストを提供したエッジの場所は、期待したものとは異なる場合があります。
トラブルシューティング
x-edgeoptimize-request-id ールがありませんYOUR_DEFAULT_ORIGIN が正しく置き換えられていることを確認します。x-edgeoptimize-api-key ヘッダーの値を確認します。us-east-1 ージでなくても、リクエストを提供したエッジ領域に表示されます。cache-control: no-store に従っていない0 に設定します(手順 3)。 最小 TTL がすでに非常に短い場合は、問題ない可能性があります。Edgeでの最適化の無効化と再有効化
Lambda@Edge関数(edgeoptimize-origin)は、CloudFront 動作のオリジンリクエストおよびオリジン応答イベントに関連付けられています。 なぜなら、Lambda@Edgeの停止は、人間と Agentic の両方のその行動を通過するすべてのリクエストでインラインで実行されるので、Agentic リクエストだけでなく、すべてのライブトラフィックに影響を与えます。 Lambda@Edgeの停止が検出された場合は、関数の関連付けを直ちに削除し、通常のトラフィックフローをデフォルトオリジンに復元します。
Lambda@Edgeの停止を検出する方法
- AWS サービス正常性ダッシュボード — AWS CloudFront🔗 または Amazon Lambda} に影響を与えるアクティブなインシデントについては AWS サービス正常性ダッシュボード を確認してください。 ここで報告されるグローバルまたは地域的な停止は、問題が設定ではなくAWS インフラストラクチャ側にあることを確認する最も迅速な方法です。
- Lambda@Edge errors — AWS コンソール/CloudFront/モニタリング/[ 配布版] に移動します。 「Lambda@Edge エラー」タブを開き、「実行エラー」グラフで実行エラーを確認します。 これらの値が大きい場合、Lambda@Edgeがダウンしている可能性があります。
Lambda@Edge関数の分離
ナビゲーション: AWS コンソール/CloudFront/配布版/[ 配布版 ]/ビヘイビアー
-
動作の 編集 をクリックします。
-
「関数の関連付け」セクションまでスクロールします。
-
次の関連付けを「関連付けなし」に設定します。
table 0-row-2 1-row-2 2-row-2 3-row-2 イベント をに変更 ビューアリクエスト 関連付けなし 接触チャネルリクエスト 関連付けなし 接触チャネル応答 関連付けなし
-
変更を保存 をクリックします。
-
CloudFront 配布がデプロイを完了するまで待ちます。 ステータスが デプロイ から最終変更日(通常、数分以内)に変更されます。
デプロイが完了すると、すべてのトラフィックルートはデフォルトオリジンに直接ルーティングされます。 設定は削除されません。Lambda 関数とその関連付けはいつでも復元できます。
Lambda@Edge関数の再接続
ナビゲーション: AWS コンソール/CloudFront/配布版/[ 配布版 ]/ビヘイビアー
-
動作の 編集 をクリックします。
-
「関数の関連付け」セクションまでスクロールします。
-
関連付けを復元します。
table 0-row-2 1-row-2 2-row-2 3-row-2 イベント をに設定 ビューアリクエスト edgeoptimize-routing(CloudFront 関数)接触チャネルリクエスト 手順 4 のバージョン管理された Lambda ARN 接触チャネル応答 手順 4 のバージョン管理された Lambda ARN 手順 4 で示したバージョン付き 関数 ARN を使用します(バージョンの公開)。
-
変更を保存 をクリックします。
-
配布がデプロイを完了するのを待ってから、Agentic リクエストが手順 6 で説明したように
x-edgeoptimize-request-idヘッダーを返すことを確認します。
利用可能なオポチュニティ、自動最適化ワークフロー、FAQ など、Edgeでの最適化について詳しくは、Edgeでの最適化の概要 を参照してください。