For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.
ガイドとサーベイへのプロキシ要求
単一のAWS CloudFrontディストリビューションを設定して、静的アセットとガイドおよびサーベイのAPIトラフィックの両方をリバースプロキシします。リバースプロキシを使用すると、特定の地域でのドメインブロックや、特定の拡張機能や DNS サーバーによるドメインブロックを回避できます。ガイドとサーベイの API および静的アセットはレイテンシーに敏感であるため、Amplitude は往復時間を最小限に抑えるためにエッジホスト型ソリューションを使用することを推奨しています。
統合されたCloudFrontディストリビューションを作成する
このセットアップでは、1つのCloudFrontディストリビューションと3つのオリジンと3つのキャッシュ動作を使用します。
- デフォルトのオリジンは、静的 SDK アセットをプロキシ
cdn.amplitude.comしますcdn.eu.amplitude.com。 - セカンダリオリジンは、
gs.amplitude.comまたはgs.eu.amplitude.comで始まる API リクエストをプロキシします/sdk/。 - 第 3 のオリジンは、ワイルドカードパターンを使用してナッジ画像をプロキシ
engagement-static.amplitude.comしますengagement-static.eu.amplitude.com。
実装で AI アシスタントを使用している場合は、アシスタントチャットホストに 4 つ目のオリジンと動作を追加してください。 詳細については、「プロキシ AI アシスタント」を参照してください。
ステップバイステップの設定
AWS で、CloudFront を開き、Create CloudFront distribution をクリックします。
最初のオリジンを設定します。
- オリジンドメイン: 米国のデータセンターの場合、または EU のデータセンター
cdn.eu.amplitude.comの場合cdn.amplitude.com - 許可されている HTTP メソッド:
GET, HEAD, OPTIONS- HTTP メソッドをキャッシュ:
OPTIONS
- HTTP メソッドをキャッシュ:
- キャッシュポリシー: 静的資産に適切なキャッシュポリシーを選択します (例:
CachingOptimized)。 - オリジンリクエストポリシー:
AllViewerExceptHostHeader - レスポンスヘッダーポリシー:
CORS-with-preflight-and-SecurityHeadersPolicy - Web アプリケーションファイアウォール (WAF): セキュリティ保護を有効にしないでください。
[ディストリビューションを作成] をクリックします
- オリジンドメイン: 米国のデータセンターの場合、または EU のデータセンター
ガイドとサーベイ API 用に 2 つ目のオリジンを追加します。_オリジン_タブに移動し、オリジンを作成をクリックします。
- オリジンのドメイン:
gs.amplitude.com米国のデータセンターの場合、またはgs.eu.amplitude.comEUのデータセンター向け
- オリジンのドメイン:
「Behaviors」タブに移動し、「Create behavior(動作を作成)」をクリックします。
- パスパターン:
/sdk/* - オリジン: 選択
gs.amplitude.comまたはgs.eu.amplitude.com - 許可されている HTTP メソッド:
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE- HTTP メソッドをキャッシュ:
OPTIONS
- HTTP メソッドをキャッシュ:
- キャッシュポリシー:
CachingDisabled - オリジンリクエストポリシー:
AllViewerExceptHostHeader - レスポンスヘッダーポリシー:
CORS-with-preflight-and-SecurityHeadersPolicy
- パスパターン:
ワイルドカードパターンは/sdk/*、表示されているとおりに正確に使用してください。/sdk/configのような特定のパスのリストをハードコードしないでください。 ガイドとサーベイ SDK は、プレビュー モード機能を/sdk/admin/config含む/sdk/パス内の複数のエンドポイントにリクエストを送信します。ワイルドカードパターンの代わりに特定のパスを使用すると、一部の機能が失敗します。
ナッジ画像用に 3 番目のオリジンを追加します。_オリジン_タブに移動し、オリジンを作成をクリックします。
- オリジンのドメイン:
engagement-static.amplitude.com米国のデータセンター向けengagement-static.eu.amplitude.comEUのデータセンター向け
- オリジンのドメイン:
「Behaviors」タブに移動し、「Create behavior(動作を作成)」をクリックします。
- パスパターン:
* - オリジン: 選択
engagement-static.amplitude.comまたはengagement-static.eu.amplitude.com - 許可されている HTTP メソッド:
GET, HEAD, OPTIONS- HTTP メソッドをキャッシュ:
OPTIONS
- HTTP メソッドをキャッシュ:
- キャッシュポリシー: 静的資産に適切なキャッシュポリシーを選択します (例:
CachingOptimized)。 - オリジンリクエストポリシー:
AllViewerExceptHostHeader - レスポンスヘッダーポリシー:
CORS-with-preflight-and-SecurityHeadersPolicy
- パスパターン:
AI アシスタントをプロキシする
実装で AI アシスタントを使用している場合は、同じ CloudFront ディストリビューションに 4 つ目のオリジンと動作を追加してください。 アシスタントは、チャットトラフィックをガイドとサーベイ API ホストに送信しません。これは、/api/パスの下にある別のホストを呼び出します:
assistant-api.amplitude.com米国のデータセンター向けです。assistant-api.eu.amplitude.comEUデータセンター向けです。
実装で AI アシスタントを使用していない場合は、このセクションをスキップしてください。
開始する前に、ブラウザのネットワークタブに、houston-chat.prod.us-west-2.amplitude.com などの地域固有のホスト名へのアシスタントリクエストが表示されることがあります。 いずれにしても、assistant-api.amplitude.comまたは assistant-api.eu.amplitude.comをオリジンとして使用してください。 両方のホスト名が同じサービスに到達します。
アシスタントのオリジンと動作を追加するには:
AI アシスタントのオリジンを追加します。 _オリジン_タブに移動し、オリジンを作成をクリックします。
- オリジンのドメイン:
assistant-api.amplitude.com米国のデータセンター向けassistant-api.eu.amplitude.comEUのデータセンター向け
- オリジンのドメイン:
AI アシスタントの動作を追加します。 _「動作」_タブに移動し、「動作を作成」をクリックします。
- パスパターン:
/api/* - オリジン: 選択
assistant-api.amplitude.comまたはassistant-api.eu.amplitude.com - 許可されている HTTP メソッド:
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE- HTTP メソッドをキャッシュ:
OPTIONS
- HTTP メソッドをキャッシュ:
- キャッシュポリシー:
CachingDisabled - オリジンリクエストポリシー:
AllViewerExceptHostHeader - レスポンスヘッダーポリシー:
CORS-with-preflight-and-SecurityHeadersPolicy - オブジェクトを自動的に圧縮:
No
- パスパターン:
[/api/*オブジェクトを自動的に圧縮] 動作をオフにします。アシスタントは、長期間有効なPOST要求に対してサーバーから送信されたイベントとして各応答をストリーミングします。 CloudFront がレスポンスを圧縮するときは、ストリーム全体をバッファリングするため、エージェントの処理が完了した後に応答が 1 つのブロックとして到着するか、何らかの処理が行われる前にリクエストがタイムアウトします。
ワイルドカードパターンは、/api/*表示されているとおりに正確に使用してください。アシスタントは、/api/chat/ および/api/v2/chat/ の下にあるいくつかのエンドポイントを呼び出します。これには、セッションの作成、履歴、添付ファイル、ツールの承認、ストリーミングが含まれます。 個々のパスをリストする動作は、省略されたエンドポイントを破壊します。
プロキシをテストする
AWS がディストリビューションをデプロイした後、各パスをテストして、リクエストが正しいオリジンにルーティングされていることを確認してください。
ガイドとサーベイ API をテストする
<domain_name> SUBDOMAINを CloudFront ドメイン名に、<api_key> APIKEYをプロジェクトの API キーに置き換えます。
curl -i 'https://SUBDOMAIN.cloudfront.net/sdk/v1/decide' -H 'Authorization: Api-Key APIKEY'
成功した応答は HTTP ステータス 200 OKを返します。
CDN をテストする
curl -I 'https://SUBDOMAIN.cloudfront.net/engagement-browser/prod/index.min.js.gz'
成功した応答は HTTP ステータス 200 OKを返します。
AI アシスタント API をテストする
curl -i 'https://SUBDOMAIN.cloudfront.net/api/chat/settings' -H 'Authorization: Api-Key APIKEY'
成功した応答は HTTP ステータス 200 OKを返します。CloudFront からの 403<error_code> エラーは、その動作がアシスタントオリジンにルーティングされないことを/api/*意味します。
プロキシを使用して SDK を初期化する
serverUrl, cdnUrl, mediaUrl, および chatUrl を同じ CloudFront ドメインに向けます:
engagement.init("API_KEY", {
serverUrl: "https://SUBDOMAIN.cloudfront.net",
cdnUrl: "https://SUBDOMAIN.cloudfront.net",
mediaUrl: "https://SUBDOMAIN.cloudfront.net",
chatUrl: "https://SUBDOMAIN.cloudfront.net",
});
このmediaUrlパラメータにより、ナッジで使用される画像もCloudFrontディストリビューションを通じてプロキシされるようになります。このmediaUrlパラメータを使用すると、顧客ドメインが engagement-static.amplitude.com へのリクエストをブロックした場合に画像がロードされないことを防ぐことができます。
このchatUrlパラメータは、AI アシスタントのトラフィックを CloudFront ディストリビューション経由でルーティングします。 実装で AI アシスタントを使用していない場合はchatUrl省略してください。 それがない場合、SDK はアシスタント ホストを直接呼び出し、そのホストがブロックされている場合でもアシスタントは失敗します。
一般的なプロキシ問題のトラブルシューティング
- プレビューモードが機能しません
- 症状::プレビューモードでガイドが正しく読み込まれないか、表示されない
- 原因: パスパターンがワイルドカードパターンの代わりに特定のパスで構成されている場合などです
/sdk/*(/sdk/configを使用した場合など)。 - 解決策: パスパターンをステップ 4 で指定したとおりに設定します。プレビューモードでは
/sdk/*にリクエストを送信しますが、このリクエストは特定のパスでプロキシされません。/sdk/admin/config
- ガイドは非表示または完了状態を保持しません
- 症状::ユーザーがガイドを非表示または完了した後でも、次のセッションでガイドが再表示されます。
- 原因:
- 原因 1: 許可されている HTTP メソッドには、ガイドとサーベイで状態更新に必要な
POSTが含まれていません。 - 原因2::オリジンリクエストポリシーが
AllViewerExceptHostHeader
- 原因 1: 許可されている HTTP メソッドには、ガイドとサーベイで状態更新に必要な
- ソリューション:
- 解決策 1: ステップ 4 で許可されている HTTP メソッドが、
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE他の必須メソッドとともに次のものを含んでいることを確認しますPOST。POSTがなければ、SDK は/stateユーザーインタラクション状態を更新するためのリクエストをエンドポイントに送信できません。 - 解決策 2: オリジンリクエストポリシーが
AllViewerExceptHostHeaderであることを確認してください。POSTホストヘッダーが無効な値で上書きされている場合、リクエストは失敗します。
- 解決策 1: ステップ 4 で許可されている HTTP メソッドが、
- 画像はナッジで読み込まれません
- 症状:ガイド内の画像が壊れているか欠落しているように見え、代わりにプレースホルダーアイコンが表示されます
- 原因:
- 原因 1:
mediaUrlパラメータが SDK の初期化時に設定されていません。 - 原因 2: 画像のオリジンにワイルドカード
*キャッシュの動作がない。 - 原因3: 画像のオリジンが正しく設定されていない。
- 原因 1:
- ソリューション:
- 解決策 1: SDK の初期化
mediaUrl: "https://SUBDOMAIN.cloudfront.net"に追加します。 - 解決策 2:
engagement-static.amplitude.comまたはengagement-static.eu.amplitude.comオリジンを指すワイルドカード*キャッシュ動作を作成済みであることを確認します。 - 解決策3: 画像のオリジンドメインがお客様のデータセンター(米国またはEU)と一致していることを確認します。
- 解決策 1: SDK の初期化
- AI アシスタントが応答しないか、または答えが 1 つのブロックに表示される
- 症状:チャット ウィンドウにエラーが表示されたり、空のままになったり、長い休止後に単語ごとにストリーミングされるのではなく完全な回答が表示されたりします。
- 原因:
- 原因 1:
chatUrlは設定されていないため、SDK はアシスタント ホストを直接呼び出し、ブロックされたドメインはリクエストをドロップします。 - 原因 2:
/api/*動作が欠落しているため、アシスタントのリクエストはワイルドカード*動作に転換し、画像のオリジンに到達します。 - 原因 3: この
/api/*動作によりオブジェクトが自動的に圧縮され、ストリーミングされた応答がバッファリングされます。
- 原因 1:
- ソリューション:
- 解決策 1: SDK の初期化
chatUrl: "https://SUBDOMAIN.cloudfront.net"に追加します。 - 解決策 2: アシスタントのオリジンを指す
/api/*動作を作成します。 CloudFront は最も具体的なパスパターンに一致するため、*よりも優先されます。/api/* - 解決策 3:
/api/*動作でオブジェクトを自動的に圧縮をNoに設定し、そのキャッシュポリシーをCachingDisabledに設定したままにします。
- 解決策 1: SDK の初期化
一般的なデバッグ手順
CloudFront ログを確認する: CloudFront ディストリビューションでログを有効にすることで、どのリクエストが実行されているかとそのレスポンスコードを確認できます。
すべてのオリジンが設定されていることを確認します。CDN オリジン (
gs.amplitude.comまたはgs.eu.amplitude.com)、API オリジン (cdn.amplitude.comまたはcdn.eu.amplitude.com)、および画像オリジン (engagement-static.amplitude.comまたはengagement-static.eu.amplitude.com) があることを確認します。 AI アシスタントを使用する場合は、アシスタントのオリジン (assistant-api.amplitude.comまたはassistant-api.eu.amplitude.com) も確認してください。各エンドポイントをテストする:「プロキシのテスト」セクションの curl コマンドを使用して、API、CDN、およびアシスタントパスが正しく動作していることを確認します。
ブラウザのネットワークタブを確認してください: ブラウザの開発者ツールのネットワークタブで失敗したリクエストを探してください。特に、ルーティングの問題を示す可能性のある 404 または 403 エラーを探してください。
これは役に立ちましたか?