WebTracking は、ページビュー、購入履歴、セッション期間など、ブラウザでのユーザーの行動を収集および分析します。このアクティビティデータを Simple Log Service (SLS) にストリーミングして、行動分析とビジネスの最適化を行います。アプリケーションコードへのわずかな変更のみが必要です。
WebTracking は 2 つの取り込み方法を提供しており、認証付き取り込みが主要かつ推奨されるアプローチです。
認証付き取り込み (推奨)
フロントエンドアプリケーションは、バックエンドサービスから一時的な認証情報を取得します。このサービスは Alibaba Cloud セキュリティトークンサービス (STS) を呼び出して、有効期間の短い AccessKey ID、AccessKey Secret、および限定された権限のポリシーを含むトークンを生成します。アプリケーションはこれらの認証情報を使用してリクエストに署名し、ログを SLS にアップロードします。この有効期間の短い認証情報と最小権限の原則の組み合わせにより、フロントエンドの構成が公開された場合でも、ログの偽造やデータ汚染などのリスクを効果的に軽減します。匿名取り込み
フロントエンドアプリケーションは、認証なしでパブリック WebTracking エンドポイントにログを直接アップロードします。設定は簡単ですが、このアプローチでは Logstore にパブリック書き込み権限を付与する必要があります。プロジェクトまたは Logstore の詳細が公開されると、不正使用やデータ汚染につながる可能性があります。したがって、この方法はテスト環境にのみ適しています。
クラウドリソースの準備
開始する前に、ログのストレージと管理に必要なリソースを作成します。
ステップ 1: プロジェクトの作成
プロジェクトは SLS の主要なリソース管理ユニットです。さまざまなアプリケーションのリソースを分離するのに役立ちます。
プロジェクトを作成するには、SLS コンソールにログインし、 [プロジェクトの作成] をクリックします。
構成:
リージョン: ログのソースに基づいてリージョンを選択します。作成後に変更することはできません。
プロジェクト名: Alibaba Cloud 内でグローバルに一意である必要があり、作成後に変更することはできません。
他のパラメーターはデフォルト値のままにして、[作成] をクリックします。
ステップ 2: Logstore の作成
Logstore はログストレージの基本単位です。アップロードされたすべてのフロントエンドログの宛先として機能します。
Logstore を作成するには、ターゲットプロジェクトに移動します。左側のナビゲーションウィンドウで、
[ロギング] を選択し、 [+] をクリックします。
構成:
Logstore 名: 名前はプロジェクト内で一意である必要があります。この名前は Logstore の作成後に変更することはできません。たとえば、
web-tracking-logstoreです。Logstore タイプ: [標準] または [クエリ] を選択します。
課金モード:
機能単位の支払い: ログ量が少ない場合や、開発およびテストのユースケースに適しています。
取り込みデータ量による支払い: 長期的な分析が必要な安定したログ量のユースケースに適しています。
データ保持期間: デフォルトは 30 日です (1~3650 日をサポート)。
他のパラメーターはデフォルト値のままにして、[OK] をクリックします。
認証付き取り込み (推奨)
このアプローチは、バックエンドサービスを使用して一時的な認証情報を発行することで、クライアント側でキーを公開するセキュリティリスクを軽減します。これは、本番環境で推奨されるソリューションです。
仕組み
このアプローチでは、クライアントに長期キーを保存することを回避します。代わりに、フロントエンドアプリケーションはバックエンドサービスから一時的な認証情報を取得し、バックエンドサービスは STS API を呼び出してそれらを生成します。WebTracking SDK は、これらの認証情報を使用してログをアップロードします。認証情報は設定された期間 (デフォルトでは 60 分) が経過すると自動的に期限切れになり、安全で時間制限のあるアクセスが保証されます。
クライアントが認証情報をリクエスト: フロントエンドアプリケーションは、ログをアップロードするための一時的なアクセス認証情報をアプリケーションサーバにリクエストします。
サーバーがリクエストを検証し、一時的な認証情報を取得: リクエストを検証した後、アプリケーションサーバは事前に設定された Resource Access Management (RAM) ユーザー ID を使用して STS AssumeRole API を呼び出し、SLS への書き込み権限を持つ RAM ロールを偽装します。
STS が一時的な認証情報を発行: ロールの権限を確認した後、STS は AccessKey ID、AccessKey Secret、および STS トークンを含む一時的な認証情報を生成します。
サーバーが認証情報をクライアントに送信: アプリケーションサーバは一時的な認証情報をフロントエンドアプリケーションに返します。
クライアントがログをアップロード: クライアントは一時的な認証情報を使用して、WebTracking SDK を介して収集したログを指定された Logstore にアップロードします。
ステップ 1: RAM 権限の設定
このステップでは、最小権限の原則に従って、バックエンド認証情報サービスとフロントエンド SDK のための安全な ID と権限を作成します。
1. フロントエンドアプリケーションが偽装する RAM ロールの作成
このロールは長期キーを持たない仮想 ID であり、アプリケーションが一時的に偽装してログをアップロードする権限を取得します。
1.1 RAM ロールの作成
RAM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択し、[ロールの作成] をクリックします。
構成:
プリンシパルタイプ: [Alibaba Cloud アカウント] を選択します。
プリンシパル名: 現在のアカウントを選択するか、別のアカウントを指定します。
[OK] をクリックし、ロール名
sls-web-trackingを入力します。
1innerHTML.2 書き込み専用権限を付与するポリシーの作成
このポリシーは、ロールを指定された Logstore にのみログを書き込むように制限します。
左側のナビゲーションウィンドウで、 を選択し、[ポリシーの作成] をクリックします。
構成:
[JSON] タブで、次のスクリプトを貼り付けます。
<ProjectName>と<LogstoreName>を実際のプロジェクト名と Logstore 名に置き換えます。{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "log:PostLogStoreLogs", "log:PutLogs" ], "Resource":[ "acs:log:*:*:project/<ProjectName>/logstore/<LogstoreName>" ] } ] }[OK] をクリックします。ポリシー名 post-logs-policy を入力し、[OK] をクリックします。
1.3 RAM ロールにログをアップロードする権限を付与
前のステップで作成した書き込み権限ポリシーを、フロントエンドが偽装するロールにアタッチします。
左側のナビゲーションウィンドウで、 を選択します。ターゲットのロール名をクリックして、ロールの詳細ページに移動します。[権限] ページで、[権限の付与] をクリックします。
構成:
[権限の付与] パネルで、前のステップで作成したカスタムポリシー (
post-logs-policy) を検索して選択します。[権限の付与] をクリックします。
2. バックエンドサービス用の RAM ユーザーの作成
バックエンドサービスは、このユーザーの長期 AccessKey を使用して STS サービスを呼び出し、ロールを偽装します。
2.1 RAM ユーザーの作成
エントリポイント: RAM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択し、[ユーザーの作成] をクリックします。
構成:
ログオン名: 英字、数字、ピリオド (.)、ハイフン (-)、アンダースコア (_) のみサポートし、最大 64 文字です。たとえば、
sls-token-serviceです。アクセスモード: [永続的な AccessKey を使用してアクセス] を選択します。
他のパラメーターはデフォルト値のままにします。[OK] をクリックしてユーザーを作成します。AccessKey ID と AccessKey Secret を保存します。
AccessKey Secret は作成時に一度しか表示されず、後で取得することはできません。すぐに安全な場所に保存してください。
2innerHTML.2 RAM ユーザーにロールを偽装する権限を付与
ターゲットのユーザー名をクリックしてユーザー詳細ページに移動します。[権限] タブに切り替えて、[権限の付与] をクリックします。
構成:
[ポリシー] セクションで、
AliyunSTSAssumeRoleAccessポリシーを選択します。他のパラメーターはデフォルト値のままにします。[権限の付与] をクリックします。
概要: バックエンドサービスは RAM ユーザー (その AccessKey を使用) を使用して sls-web-tracking ロールを偽装し、フロントエンドアプリケーションに返される一時的なセキュリティ認証情報を生成します。WebTracking SDK は、この一時的な認証情報を使用してログを安全にアップロードします。ステップ 2: バックエンド STS 一時認証情報サービスの構築
フロントエンドからの認証情報リクエストを受信し、一時的な STS 認証情報を安全に返すためのバックエンド API エンドポイントを構築する必要があります。次の例では Python と Flask を使用します。
技術スタックに基づいて Java や Node.js などの他の言語でサービスを実装する方法については、「付録 1: 複数言語での STS の例」をご参照ください。
1. サーバー環境の準備
本番環境では、STS 認証情報サービスは既存のアプリケーションサーバに統合するか、スタンドアロンのエンドポイントとしてデプロイできます。どちらのアプローチでも、ホストサーバーは次の要件を満たす必要があります。
フロントエンドアプリケーションは HTTP または HTTPS 経由でサーバーにアクセスできます。
Python 3 がインストールされていること。バージョン 3.8 以降を推奨します。
次のコマンドを実行して、Alibaba Cloud STS API を呼び出すために必要な依存関係をインストールします。
# Flask Web フレームワークと Alibaba Cloud SDK の依存関係をインストールします
pip3 install Flask==3.1.2
pip3 install aiohttp==3.8.4
pip3 install alibabacloud-credentials==0.3.2
pip3 install alibabacloud-sts20150401==1.1.3
pip3 install alibabacloud-tea==0.3.2
pip3 install alibabacloud-tea-openapi==0.3.7
pip3 install alibabacloud-tea-util==0.3.8
pip3 install alibabacloud-tea-xml==0.0.22. バックエンド STS サービスコードの記述
STS 一時認証情報を生成して返すための HTTP エンドポイント /get_sts_token を作成します。
2.1 プロジェクトディレクトリとファイルの作成
# プロジェクトディレクトリを作成して入る
mkdir my_web_sample
cd my_web_sample
touch main.py2innerHTML.2 main.py ファイルの編集
main.py ファイルに次のコードを貼り付けます。<YOUR_ROLE_ARN> を RAM ロール sls-web-tracking の ARN に置き換えます。<YOUR_ROLE_SESSION_NAME> を role_session_test などのカスタムセッション名に置き換えます。
import json
from flask import Flask, render_template
from alibabacloud_tea_openapi.models import Config
from alibabacloud_sts20150401.client import Client as Sts20150401Client
from alibabacloud_sts20150401 import models as sts_20150401_models
from alibabacloud_credentials.client import Client as CredentialClient
app = Flask(__name__)
# ================== ユーザー設定 ==================
# RAM ロールの ARN に置き換えます。フォーマット: acs:ram::${accountId}:role/${roleName}
role_arn_for_sls_upload = '<YOUR_ROLE_ARN>'
# ロールセッション名を設定します。リクエストソースの一意の識別子を推奨します。
role_session_name = '<YOUR_ROLE_SESSION_NAME>' # 例: sls-web-session-001
# STS サービスが配置されているリージョン。例: ap-southeast-1。
region_id = 'ap-southeast-1'
# ==============================================
@app.route("/")
def hello_world():
return render_template('index.html')
@app.route('/get_sts_token', methods=['GET'])
def get_sts_token():
"""
エンドポイント: /get_sts_token
メソッド: GET
機能: STS AssumeRole API を呼び出して一時的なセキュリティトークンを取得する
戻り値: JSON 形式の Credentials オブジェクト
"""
# CredentialClient を初期化する際にパラメーターを指定しない場合、デフォルトの認証情報チェーンが使用されます。
# プログラムをローカルで実行する場合、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を使用して AccessKey ペアを指定します。
# プログラムを ECS、ECI、または Container Service で実行する場合、ALIBABA_CLOUD_ECS_METADATA 環境変数を使用してインスタンスロールを指定します。SDK は自動的に一時的な STS 認証情報を取得します。
config = Config(
region_id=region_id,
credential=CredentialClient()
)
sts_client = Sts20150401Client(config=config)
# AssumeRole リクエストを構築する
assume_role_request = sts_20150401_models.AssumeRoleRequest(
role_arn=role_arn_for_sls_upload,
role_session_name=role_session_name,
)
# STS を呼び出して一時的な認証情報を取得する
response = sts_client.assume_role(assume_role_request)
token = json.dumps(response.body.credentials.to_map())
return token
app.run(host="0.0.0.0", port=80)
3. バックエンドサービスの開始
次のコマンドを実行します。以前に作成した RAM ユーザーの AccessKey ペアを使用します。
ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_AK_ID>
ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_AK_SECRET>
python3 main.py4. エンドポイントが機能していることを確認する
テストリクエストを送信します:
curl http://<your_server_public_IP_address>/get_sts_token成功応答のサンプル:
{
"AccessKeyId": "STS.L4xxxxxx",
"AccessKeySecret": "Dcyyyyyyyy",
"Expiration": "2025-04-05T10:30:00Z",
"SecurityToken": "CAISzxxxxxxxxxxx..."
}
検証ポイント:
応答には
AccessKeyId、AccessKeySecret、およびSecurityTokenフィールドが含まれています。AccessKeyIdはSTS.で始まります。これは一時的な認証情報を示します。Expirationフィールドは有効期限を示し、妥当な範囲内である必要があります。
ステップ 3: WebTracking SDK をフロントエンドに統合する
SDK をフロントエンドアプリケーションに統合し、安全な権限付与とログアップロードのために STS プラグインを設定します。完全なサンプルプロジェクトについては、「付録 II: フロントエンドアプリケーションのサンプルプロジェクト」をご参照ください。
1. SDK 依存関係のインストール
npm を使用して WebTracking SDK とその STS プラグインをインストールします:
npm install --save @aliyun-sls/web-track-browser
npm install --save @aliyun-sls/web-sts-plugin2. SDK の初期化と STS 認証の設定
フロントエンドプロジェクトで、index.js などの JavaScript ファイルを作成してログコレクターを初期化します。このファイルは SlsTracker インスタンスを初期化し、STS 一時認証情報プラグインを設定します。
2.1 コアモジュールのインポート
import SlsTracker from "@aliyun-sls/web-track-browser";
import createStsPlugin from "@aliyun-sls/web-sts-plugin";2innerHTML.2 基本的な SLS 情報の設定
実際のリソース情報に基づいて、次のパラメーターを入力します:
const opts = {
host: "${endpoint}", // サービスリージョンのエンドポイント。例: ap-southeast-1.log.aliyuncs.com
project: "${project}", // プロジェクト名
logstore: "${logstore}", // Logstore 名
time: 10, // ログを送信する間隔 (秒)。デフォルトは 10 です。
count: 10, // バッチで送信するログの数。デフォルトは 10 です。
topic: "topic", // カスタムログトピック
source: "source",
tags: {
tags: "tags",
},
};2.3 安全な権限付与のための STS プラグインの設定
クライアント上で長期 AccessKey を公開しないようにするため、アプリケーションは代わりにバックエンドサービスから一時的な認証情報 (STS トークン) を取得します。提供されている STS プラグインは、これらの認証情報が期限切れになる前に動的に更新するプロセスを自動化します。
const stsOpt = {
accessKeyId: "",
accessKeySecret: "",
securityToken: "",
// STS トークンを更新するための非同期関数
refreshSTSToken: () =>
new Promise((resolve, reject) => {
const xhr = new window.XMLHttpRequest();
xhr.open("GET", "http://<your_ECS_instance_public_IP_address>/get_sts_token", true);
xhr.send();
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
let credential = JSON.parse(xhr.response);
// 一時的な認証情報を更新する
stsOpt.accessKeyId = credential.AccessKeyId;
stsOpt.accessKeySecret = credential.AccessKeySecret;
stsOpt.securityToken = credential.SecurityToken;
resolve();
} else {
reject("Wrong status code.");
}
}
};
}),
// (オプション) カスタム更新間隔。デフォルトは 5 分 (300,000 ms) です。
// refreshSTSTokenInterval: 300000,
// (オプション) トークンの有効期限が切れる何ミリ秒前に更新するかを設定します。
// stsTokenFreshTime: undefined,
};2.4 トラッカーインスタンスの初期化と STS プラグインの有効化
// トラッカーインスタンスを作成する
const tracker = new SlsTracker(opts);
// STS プラグインを作成して登録する
const stsPlugin = createStsPlugin(stsOpt);
tracker.useStsPlugin(stsPlugin);
3. アプリケーションコードからログを送信する
Web ページで、標準の DOM イベントバインディングを使用してユーザーのアクションをキャプチャし、tracker.send() メソッドを呼び出してカスタムログを送信します。
3.1 ユーザーインタラクションイベントのリッスン
例: ユーザーログインイベントの追跡
document.getElementById("loginButton").addEventListener("click", () => {
const username = document.getElementById("username").value;
tracker.send({
eventType: "login",
username: username,
});
console.log("Login event tracked for:", username);
});3innerHTML.2 HTML でスクリプトを参照する
JavaScript ファイルが正しく読み込まれていることを確認します。モジュールとしてインポートします:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<title>User Behavior Monitoring Example</title>
</head>
<body>
<input type="text" id="username" placeholder="Enter username" />
<button id="loginButton">Log On</button>
<!-- モジュール形式のスクリプトを使用する -->
<script type="module" src="/static/js/index.js"></script>
</body>
</html>4. アプリケーションの実行とテスト
フロントエンドページにアクセスし、ユーザー動作イベントをトリガーすると、WebTracking SDK はログの収集とアップロードを開始します。
フロントエンドサービスを起動し、
http://<your_server_public_IP_address>でフロントエンドページにアクセスします。ユーザー操作をシミュレートします (たとえば、ログインボタンをクリックします)。
F12 を押して、ブラウザで開発者ツールを開きます。
[コンソール] タブで、出力に
Login event tracked for: xxxが表示されるかどうかを確認します。[ネットワーク] タブで、
cn-xxx.log.aliyuncs.comへの POST リクエストが成功したかどうかを確認します。
手順 4: ログの取り込みの確認
SDK がセキュアチャネルを介して、SLS のログストアにフロントエンドログを正常に書き込んだことを確認してください。
SLS コンソールにログインします。
[プロジェクト] セクションで、ターゲットプロジェクトをクリックします。
[Logstores] ページで、ターゲット Logstore 名の横にある
アイコンをクリックして展開します。
アイコンをクリックして、Search & Analyze ページに移動します。[有効化] をクリックします。右側に表示されるパネルで、[インデックス自動作成] をクリックします。
システムが自動的にログ構造を識別し、フィールド構成を推奨します。設定を確認し、[OK] をクリックします。
インデックスが有効になった後、有効になるまで約 1 分待ちます。その後、ログをクエリします。
匿名での取り込み
Logstore の WebTracking オプションを有効にすると、その Logstore へのパブリック書き込みアクセスが許可されます。これにより、クライアントは WebTracking SDK、HTTP リクエスト、およびその他のメソッドを使用してログデータを直接アップロードできます。
本番環境では匿名での取り込みを使用しないでください。 このメソッドは、インターネットからの認証されていない書き込みに対して Logstore を開きます。これは、テスト環境でログパイプラインを迅速に検証することのみを目的としています。
ステップ 1: WebTracking を有効にする
SLS コンソールにログインします。
[プロジェクト] セクションで、ターゲットプロジェクトをクリックします。
タブで、ターゲット Logstore を見つけ、 をクリックします。
[Logstore 属性] ページで、[変更] をクリックします。
[WebTracking] を有効にしてから、[保存] をクリックします。
ステップ 2: 匿名での収集を構成してログをアップロードする
次の統合メソッドがサポートされています:
WebTracking SDK: WebTracking SDK をフロントエンドコードにインポートし、
send()メソッドを呼び出して構造化ログをアップロードします。このメソッドは、最新の Web アプリケーションに適しています。HTTP GET リクエスト: ログデータを URL パラメーターに追加し、GET リクエストで直接アップロードします。このメソッドは実装が簡単で、少数のログのデバッグや軽量な収集に適しています。
HTML タグ (img):
<img>タグのsrc属性を使用してリクエストを開始し、ログ情報を URL にエンコードします。このメソッドは JavaScript を必要とせず、クロスドメインリクエストを自然にサポートし、JavaScript のない環境での静的ページやメールトラッキングに適しています。OpenAPI バッチ書き込み: POST リクエストを介して SLS OpenAPI を呼び出します。このメソッドは、サーバーから大量のデータを一元的にアップロードするのに適しています。
WebTracking SDK
匿名モードでは、STS プラグインを構成する必要はありません。SDK を直接初期化するだけです。
依存関係のインストール
# ブラウザ用
npm install --save @aliyun-sls/web-track-browser
# miniapps 用
npm install --save @aliyun-sls/web-track-mini基本的な SLS 情報の構成
import SlsTracker from '@aliyun-sls/web-track-browser'
const opts = {
host: '${host}', // お使いのリージョンにおけるサービスのエンドポイント。例: ap-southeast-1.log.aliyuncs.com
project: '${project}', // プロジェクト名。
logstore: '${logstore}', // Logstore 名。
time: 10, // ログを送信する間隔。デフォルトは 10 秒です。
count: 10, // バッチで送信するログの数。デフォルトは 10 です。
topic: 'topic',// カスタムログ Topic。
source: 'source',
tags: {
tags: 'tags',
},
}
const tracker = new SlsTracker(opts) // SlsTracker オブジェクトを作成しますログのアップロード
単一のログをアップロードする場合、各ログは単一のオブジェクトです。複数のログをアップロードする場合、データ構造はオブジェクトの配列です。
単一ログのアップロード
tracker.send({
eventType:'view_product',
productName: 'Tablet',
price: 500
})単一のログをすぐにアップロードします (time および count パラメーターは無視されます):
tracker.sendImmediate({
eventType:'view_product',
productName: 'Tablet',
price: 500
})ログのバッチアップロード
tracker.sendBatchLogs([
{
eventType: 'view_product',
productName: 'Tablet',
price: 500
},
{
eventType: 'view_product',
productName: 'Laptop',
price: 1200
}
])ログのバッチをすぐにアップロードします (time および count パラメーターは無視されます):
tracker.sendBatchLogsImmediate([
{
eventType:'view_product',
productName: 'Tablet',
price: 500
},
{
eventType:'view_product',
productName: 'Laptop',
price: 1200
}
])HTTP GET リクエスト
ログデータを URL パラメーターとして、ログサービスのエンドポイントに直接 GET リクエストを送信します。
curl --request GET 'https://${project}.${host}/logstores/${logstore}/track?APIVersion=0.6.0&key1=val1&key2=val2'host: お使いのリージョンにおける SLS の エンドポイント。key1=val1&key2=val2: SLS にアップロードするフィールド名と値 (キーと値のペア)。複数のフィールドがサポートされています。全長は 16 KB 未満である必要があります。
HTML タグ (img)
非表示の <img> タグをフロントエンドページに埋め込みます。ブラウザの画像を自動的に読み込むメカニズムがログのアップロードをトリガーします。
<!-- カスタムフィールドを収集 -->
<img src='https://${project}.${host}/logstores/${logstore}/track.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>
<!-- User-Agent と Referer も収集 -->
<img src='https://${project}.${host}/logstores/${logstore}/track_ua.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>track_ua.gif を使用すると、User-Agent と Referer の情報が自動的に収集されます。ブラウザのキャッシュを防ぐには、タイムスタンプパラメーターを追加します。
OpenAPI バッチ書き込み
PutWebtracking API を呼び出して複数のログをアップロードします。
ステップ 3: ログの取り込みを検証する
フロントエンドのログが Logstore に正常に書き込まれたことを確認します。
SLS コンソールにログインします。
[プロジェクト] セクションで、ターゲットプロジェクトをクリックします。
[Logstores] ページに移動します。ターゲット Logstore 名の前にある
アイコンをクリックして展開します。
をクリックして [検索と分析] ページに移動します。[有効化] をクリックします。右側に表示されるペインで、[インデックスの自動生成] をクリックします。
システムは自動的にログ構造を識別し、フィールド構成を推奨します。設定を確認し、[OK] をクリックします。
インデックスが有効になった後、有効になるまで約 1 分待ちます。その後、ログをクエリします。
使用上の注意
サービスの安定性を確保するため、SLS WebTracking には、ブラウザからのログのアップロードに関して、次のクォータが設けられています。
リクエストあたりの最大データサイズ: 3 MB
リクエストあたりの最大ログ数: 4,096
課金
WebTracking 自体は無料ですが、その結果として生じるログの書き込み、ストレージ、クエリ操作には料金が発生する場合があります。
1. 課金モード
Logstore は、次の課金モードをサポートしています。
取り込みデータ量による支払い: ログの長期保存、分析、処理、および消費を必要とする複雑なユースケースに適しています。
機能別の支払い: 柔軟なコスト管理が必要な軽量または段階的なユースケースに適しています。
2. 主要な課金項目
取り込みデータ量による支払い
取り込まれた生データ量: これは主要なコスト要因であり、生ログの非圧縮サイズ (GB 単位) に基づいて課金されます。この料金には、データの書き込み、インデックス作成、API 呼び出し、および最初の 1 か月 (30 日) のホットストレージが含まれます。
ストレージ料金: ログが 30 日を超えて保存される場合、追加のストレージ料金が適用されます。
機能別の支払い
インデックストラフィック: SLS は、データを書き込む際に、生ログの非圧縮サイズに基づいてこの 1 回限りの料金を請求します。これは、ログを検索可能にするための前提条件です。
ストレージ料金: ストレージは初日から、圧縮されたデータが占有する実際のスペースに基づいて課金されます。
読み取りおよび書き込みトラフィック、読み取りおよび書き込み回数、およびアクティブなシャード。
よくある質問
CDN を使用して WebTracking SDK をインポートできますか?
はい。このアプローチは、軽量のフロントエンドプロジェクト、静的ページ、または npm ベースのビルドプロセスが利用できない場合の迅速な検証に適しています。
古いバージョンのリスク: CDN の最新バージョンは 0.3.5 です。このバージョンは、npm の最新バージョンよりも機能が少ない可能性があります。
インポート方法:
HTML ファイルの
<head>または<body>タグに、次のスクリプトリファレンスを追加します。<script src="https://g.alicdn.com/sls/sls-js-sdk/0.3.5/web-track-browser.js"></script>SDK がロードされた後、グローバルオブジェクト
window.SLS_Trackerを使用してトラッカーインスタンスを初期化します:if (window.SLS_Tracker) { const tracker = new SLS_Tracker({ host: 'your-project.ap-southeast-1.log.aliyuncs.com', project: 'your-project', logstore: 'your-logstore', time: 10, count: 10 }); }
参考
付録 1: 複数言語での STS の例
さまざまな技術スタックを持つ開発者がバックエンド STS 認証情報サービスを迅速に構築できるように、Alibaba Cloud は、Java、Node.js、PHP、Ruby などの複数の言語でオープンソースのサンプルプログラムを提供しています。これらの例では、AssumeRole API を使用して、フロントエンドアプリケーションに一時的なアクセストークンを安全に発行します。
プロジェクト例のアドレス: Java、Node.js、PHP、Ruby
プロジェクト内の config.json 構成ファイルを変更します。次に、言語の命令に従ってサービスを開始します。
言語 | ポート |
Java | 7080 |
Node.js | 3000 |
PHP | 8000 |
Ruby | 4567 |
付録 II: サンプルフロントエンドアプリケーションプロジェクト
ブラウザ: simple-web-tracking-sts.zip。
> [変更]