すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:JavaScript 用 Web Tracking SDK の STS プラグインを使用したログのアップロード

最終更新日:Oct 13, 2026

JavaScript 用 Web Tracking SDK を使用してログをアップロードするには、Logstore の Web Tracking 機能を有効にする必要があります。これにより、Logstore への匿名書き込みが許可され、ダーティデータが生成される可能性があります。Security Token Service (STS) は、一時的なアクセス権限を管理するサービスです。STS を使用すると、カスタムの有効期間とアクセス権限を持つ一時的なID認証情報を取得できます。JavaScript 用 Web Tracking SDK の STS プラグインを使用してログをアップロードする場合、Logstore の Web Tracking 機能を有効にする必要はありません。

背景情報

image

STS の一時的な権限付与がない場合、Logstore の Web Tracking 機能を有効にする必要があります。これにより、ブラウザからの匿名書き込みが許可され、ダーティデータが生成される可能性があります。STS プラグインがログをアップロードする手順は、次のとおりです。

  1. ブラウザが業務サーバーに一時的な ID 認証情報 (STS トークン) をリクエストします。

  2. 業務サーバーが STS サービスに STS トークンをリクエストします。

    1. Resource Access Management (RAM) ユーザーの AccessKey ペアがサーバーに設定され、RAM ユーザーには AliyunSTSAssumeRoleAccess ポリシーがアタッチされています。

    2. サーバーは RAM ユーザーの AccessKey ペアを使用して STS の AssumeRole API を呼び出し、RAM ロールの STS トークンを取得します。AssumeRole の Policy パラメーターを使用して、ユーザーまたはデバイスに基づいて異なる STS トークンの権限を制限できます。

  3. STS は業務サーバーに STS トークンを返します。

  4. 業務サーバーはブラウザに STS トークンを返します。

  5. ブラウザは取得した STS トークンを使用して RAM ロールを引き受け、ブラウザから収集したログを Logstore にアップロードします。

  6. ログがアップロードされると、SLS はブラウザに応答を返します。

前提条件

ステップ 1:SDK のインストールと設定

重要
  • このトピックでは、npm メソッドを使用して JavaScript 用 Web Tracking SDK をインストールし、ウェブサイトのログを収集します。Alibaba Cloud CDN メソッドを使用する場合は、「WebTracking JavaScript SDK」をご参照ください。

  1. Node.js をインストールします。

  2. 業務サーバーで次のコマンドを実行して、依存関係をインストールします。

    npm install --save @aliyun-sls/web-track-browser
    npm install --save @aliyun-sls/web-sts-plugin
  3. 次のコードをプログラムに追加して、SDK を設定します。

    import SlsTracker from '@aliyun-sls/web-track-browser'
    import createStsPlugin from '@aliyun-sls/web-sts-plugin'
    
    const opts = {
      host: '${host}', // リージョンの SLS エンドポイント。 例: cn-hangzhou.log.aliyuncs.com
      project: '${project}', // プロジェクト名。
      logstore: '${logstore}', // Logstore 名。
      time: 10, // ログが送信される間隔。 デフォルト値: 10。 単位: 秒。
      count: 10, // 各リクエストで送信できるログの最大数。 デフォルト値: 10。
      topic: 'topic', // ログのカスタムトピック。
      source: 'source',
      tags: {
        tags: 'tags',
      },
    }
    
    const stsOpt = {
      accessKeyId: '',
      accessKeySecret: '',
      securityToken: '',
      // 以下は、refreshSTSToken 関数の簡単な例です。
      refreshSTSToken: () =>
        new Promise((resolve, reject) => {
          const xhr = new window.XMLHttpRequest()
            xhr.open('GET', 'localhost:7000/test/sts', true)
            xhr.send()
            xhr.onreadystatechange = () => {
              if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                  let credential = JSON.parse(xhr.response)
                  // この関数の目的は、stsOpt の一時的なキーとトークンを設定することです。
                  stsOpt.accessKeyId = credential.AccessKeyId
                  stsOpt.accessKeySecret = credential.AccessKeySecret
                  stsOpt.securityToken = credential.SecurityToken
                  resolve()
                } else {
                  reject('Wrong status code.')
                }
              }
            }
          }),
      // refreshSTSTokenInterval: 300000,
      // stsTokenFreshTime: undefined,
    }
    
    // トラッカーを作成します。
    const tracker = new SlsTracker(opts)
    // STS プラグインを作成します。
    const stsPlugin = createStsPlugin(stsOpt)
    // STS プラグインを使用します。
    tracker.useStsPlugin(stsPlugin)
    
    // 単一ログのアップロード例
    tracker.send({
      eventType: 'view_product',
      productName: 'Tablet',
      price: 500
    })
    

    次の表では、Web Tracking のパラメーターについて説明します。

    パラメーター

    必須

    説明

    host

    はい

    SLS が配置されているリージョンのエンドポイントです。この例では、中国 (杭州) リージョンの SLS エンドポイントが使用されています。パラメーターの値を実際のエンドポイントに置き換えてください。詳細については、「エンドポイント」をご参照ください。

    project

    はい

    プロジェクト名です。

    logstore

    はい

    Logstore 名です。

    time

    いいえ

    ログが送信される間隔です。デフォルト値は 10、単位は秒です。

    count

    いいえ

    各リクエストで送信できるログの最大数です。デフォルト値は 10 です。

    topic

    いいえ

    ログのトピックです。ログを識別するためにカスタム値を指定します。

    source

    いいえ

    ログのソースです。ログを識別するためにカスタム値を指定します。

    tags

    いいえ

    ログを識別するためのカスタムタグです。

    次の表では、STS のパラメーターについて説明します。

    パラメーター

    必須

    説明

    • accessKeyId

    • accessKeySecret

    • securityToken

    はい

    • 業務サーバーは RAM ユーザーの AccessKey ペアを使用して AssumeRole API を呼び出します。応答パラメーターには、AccessKeySecret、AccessKeyId、および SecurityToken が含まれます。

    • AssumeRole API の入力パラメーターでは、DurationSeconds はトークンの有効期間を、Policy はトークンの権限範囲をそれぞれ指定します。

    refreshSTSToken

    はい

    定期的に新しい STS トークンを取得して認証情報フィールドを更新する関数です。Promise および async 関数をサポートします。

    refreshSTSTokenInterval

    いいえ

    トークンを更新する間隔 (ミリ秒単位) です。デフォルト値は 300,000 (5 分) です。

    stsTokenFreshTime

    いいえ

    最新のトークン取得のタイムスタンプです。このパラメーターは設定不要です。

ステップ 2:ログのアップロード

単一のログをアップロードすると、各ログは個別の Object としてアップロードされます。 複数のログをアップロードすると、データ構造は複数の Object アイテムを含む Array になります。

  • 単一のログをアップロードします。タイプは Object です。例:

    tracker.send({
      eventType: 'view_product',
      productName: 'Tablet',
      price: 500
    })
  • 単一のログを即時にアップロードします。time パラメーターと count パラメーターは有効になりません。タイプは Object です。例:

    tracker.sendImmediate({
      eventType: 'view_product',
      productName: 'Tablet',
      price: 500
    })
  • 一度に複数のログをアップロードします。型は Array です。例:

    tracker.sendBatchLogs([
      {
        eventType: 'view_product',
        productName: 'Tablet',
        price: 500
      },
      {
        eventType: 'view_product',
        productName: 'Laptop',
        price: 1200
      }
    ])
  • 一度に複数のログを即時にアップロードします。time パラメーターと count パラメーターは有効になりません。型は Array です。例:

    tracker.sendBatchLogsImmediate([
      {
        eventType: 'view_product',
        productName: 'Tablet',
        price: 500
      },
      {
        eventType: 'view_product',
        productName: 'Laptop',
        price: 1200
      }
    ])

ステップ 3:アップロード結果の表示

ログが Logstore にアップロードされた後、ログのクエリと分析を行う前に、インデックスを作成する必要があります。

クイック表示

インデックスが作成されていない場合、Logstore の [消費プレビュー] をクリックしてログをすばやく表示できます。詳細については、「クエリと分析のクイックスタート」をご参照ください。

ログのクエリと分析

  1. CreateIndex API を呼び出して、全文インデックスまたはフィールドインデックスを作成します。SELECT 文を使用する場合は、フィールドインデックスを作成する必要があります。

  2. GetLogsV2 API を呼び出します。返される結果は、logs という名前のログの配列です。配列内の各要素が 1 つのログです。

関連ドキュメント

  • このトピックでは、JavaScript 用 Web Tracking SDK を使用してウェブサイトのログを収集します。JavaScript 用 Web Tracking SDK を使用してミニプログラムのログを収集する方法の詳細については、「ミニプログラム用WebTracking JavaScript SDK」をご参照ください。

よくある質問

  • SDK はエラーなしで起動しますが、ログを送信する際に TypeError: Cannot read properties of undefined (reading 'sigBytes') というエラーが報告されます。どうすればよいですか?

    考えられる原因:CryptoJS の暗号化の問題。サードパーティのパッケージは変更が難しいため、認証なしの書き込みが可能な Web Tracking を使用することを推奨します。詳細については、「WebTracking を使用したクライアントサイドログの収集」をご参照ください。