このページでは

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.

セルフホスト型セッションリプレイSDK

セルフホスティング機能を使用すると、Amplitude SDKファイルを提供したり、API呼び出しをamplitude.comではなく独自のドメインを通じてルーティングしたりできます。セルフホストを行う主な理由は、次の2つです。

  • 広告ブロッカーの回避:多くのブラウザ拡張機能とトラッキング防止ツールは、amplitude.comドメインへのリクエストをブロックします。独自のドメインを介してルーティングを行うと、ブロックを回避できます。
  • データのレジデンシー/コンプライアンス:組織では、データがAmplitudeに到達するまで自社のインフラストラクチャを離れないようにする必要がある場合があります。

セルフホスティングには2つの独立した部分があります。

  1. SDK スクリプトをホストする: 独自の CDN または静的ファイルサーバーから SDK .jsファイルを配信します (ブラウザーのみ。npm またはバンドルされたインストールではこの手順はスキップされます)。
  2. **プロキシAPI呼び出し:**SDKネットワークリクエストがAmplitudeの取り込みエンドポイントに到達する前に、自身のサーバーを介して転送します。

いずれかまたは両方の部分を個別に実装できます。


パート1: SDKスクリプトのセルフホスト

SDKスクリプトのセルフホスティングは、<script>タグを通じて読み込まれるブラウザベースのSDKに適用されます。npm経由でインストールし、自分でSDKをバンドルする場合、パート2:プロキシAPI呼び出しに進んでください。

SDKファイルを取得する

オプションA:AmplitudeのCDNからダウンロード:

bash
# Session Replay Plugin (latest: 1.28.1)
curl -O https://cdn.amplitude.com/libs/plugin-session-replay-browser-1.28.1-min.js.gz
# Session Replay Standalone SDK (latest: 1.39.0)
curl -O https://cdn.amplitude.com/libs/session-replay-browser-1.39.0-min.js.gz
# Browser SDK (latest: 2.42.0 — only needed if also self-hosting analytics)
curl -O https://cdn.amplitude.com/libs/analytics-browser-2.42.0-min.js.gz

オプションB:npmからプルします:

bash
pnpm pack @amplitude/plugin-session-replay-browser@1.28.1
# or
pnpm pack @amplitude/session-replay-browser@1.39.0

pnpm packコマンドは.tgztarballを生成します。tarballを抽出し、package/lib/scripts/ディレクトリ内のUMDバンドルを見つけます(例:plugin-session-replay-browser-1.28.1.umd.js)。そのファイルを自分のオリジンから提供してください。

最新のバージョン番号については、次の項目を確認してください。

ファイルを配信する

ファイルを独自のCDNまたは静的ファイルサーバーにホストし、<script>タグを更新してください。

html
<!-- Before -->
<script src="https://cdn.amplitude.com/libs/analytics-browser-2.42.0-min.js.gz"></script>
<script src="https://cdn.amplitude.com/libs/plugin-session-replay-browser-1.28.1-min.js.gz"></script>
<!-- After -->
<script src="https://assets.yourdomain.com/libs/analytics-browser-2.42.0-min.js.gz"></script>
<script src="https://assets.yourdomain.com/libs/plugin-session-replay-browser-1.28.1-min.js.gz"></script>

キャッシュTTL

SDKバージョンを頻繁に更新する予定がある場合は、ファイルサーバーで短いキャッシュTTL(1~5分)を設定してください。特定のバージョンにピン留めして手動で更新する場合、より長いTTLで問題ありません。


パート2:プロキシAPI呼び出し

SDKのネットワークリクエストを自社サーバー経由でルーティングすることで、amplitude.comリクエストがエンドポイントに直接送信されることはありません。プロキシサーバーはリクエストを受信し、それをAmplitudeのデフォルトエンドポイントに転送し、Amplitudeの応答を変更せずに返します。

プロキシの仕組み

最小限のプロキシ実装は以下のことを行う必要があります。

  1. カスタムURLでSDKからのリクエストを受け入れます。
  2. リクエスト本文全体とすべてのヘッダー(Hostを除く)を対応するAmplitudeエンドポイントに転送します。
  3. ステータスコード、ヘッダー、本文など、SDKに対するAmplitudeの応答を変更せずに返します。

プロキシは透過型にする必要があります。リクエストまたはレスポンスのペイロードを削除、変更、またはバッファリングしないでください。 SDKは再試行を処理するため、プロキシがその処理を行う必要はありません。

APIキーはサーバー側に保持

ダウンストリームサービス用にAuthorizationヘッダーを挿入する必要がある場合は、APIキーをクライアント側のコードにハードコードするのではなく、プロキシにヘッダーを挿入してください。サーバー側にヘッダーを挿入すると、認証情報がブラウザからアクセスできないようになります。

アナリティクス SDK

対象アプリケーション:ブラウザSDK、Android(Kotlin)SDK、iOS(Swift)SDK、React Native SDK、Node.js SDK、Python SDK、Go SDK。

serverUrl設定オプションを使用して、SDKの接続先をプロキシに指定します。

js
amplitude.init('API_KEY', {
  serverUrl: 'https://analytics.yourdomain.com/2/httpapi'
});

プロキシはリクエストを適切なAmplitudeエンドポイントに転送する必要があります:

大量の環境ではバッチエンドポイントを使用してください。 バッチモードを有効にするには、SDKでuseBatch: trueを設定し、バッチエンドポイントに転送するプロキシのパスをserverUrlに指定します。

js
amplitude.init('API_KEY', {
  useBatch: true,
  serverUrl: 'https://analytics.yourdomain.com/batch'
});

リモート設定プロキシ(ブラウザ SDK 2 のみ):

ブラウザ SDK 2 はリモート設定を個別に取得します。 これらのリクエストも同様にプロキシするには、次のremoteConfig.serverUrlオプションを使用します。

js
amplitude.init('API_KEY', {
  serverUrl: 'https://analytics.yourdomain.com/2/httpapi',
  remoteConfig: {
    serverUrl: 'https://analytics.yourdomain.com/config'
  }
});

セッションリプレイ:ブラウザ(プラグインおよびスタンドアロンSDK)

セッションリプレイは2つの別々のエンドポイントを使用します。それぞれを個別に上書きできます。

セッションリプレイプラグイン:

js
sessionReplayPlugin({
  trackServerUrl: 'https://replay.yourdomain.com/sessions/v2/track',
  configServerUrl: 'https://replay.yourdomain.com/config'
});

セッションリプレイスタンドアロン SDK:

js
sessionReplay.init('API_KEY', {
  trackServerUrl: 'https://replay.yourdomain.com/sessions/v2/track',
  configServerUrl: 'https://replay.yourdomain.com/config'
});

セッションリプレイ:モバイル (Android、iOS、React Native)

モバイルセッションリプレイプラグインはカスタムプロキシURLをサポートしていません。 唯一のルーティングオプションはserverZoneです。これは、Amplitudeの米国とEUのデータセンター間を切り替えます。データは依然としてAmplitudeのサーバーに直接流れ、自社のインフラストラクチャを通過しません。

kotlin
// Android — set on the Amplitude SDK configuration
serverZone = ServerZone.EU
swift
// iOS — set on the Amplitude SDK configuration
serverZone: .EU

コンテンツセキュリティポリシー(CSP)

アプリでコンテンツセキュリティポリシーを設定している場合は、セルフホスト型ファイルやプロキシ型エンドポイントに切り替える際にポリシーを更新してください。

CSPの例(完全セルフホスト型):

text
Content-Security-Policy: script-src 'self' https://assets.yourdomain.com; connect-src 'self' https://analytics.yourdomain.com https://replay.yourdomain.com; worker-src 'self' blob:;

お客様のプロキシはAmplitudeの米国またはEUエンドポイントへのルーティングを処理するため、CSPはお客様のドメインを参照するだけで済みます。 同じ政策が両方の地域で機能しています。

これは役に立ちましたか?