Todos os produtos
Search
Central de documentação

Simple Log Service:Use o plug-in STS do SDK de web tracking para JavaScript para fazer upload de logs

Última atualização: Jul 03, 2026

O plug-in STS do SDK de web tracking para JavaScript utiliza credenciais temporárias do Alibaba Cloud Security Token Service (STS) para enviar logs sem precisar ativar o recurso de web tracking no Logstore, o que ajuda a evitar dados incorretos.

Informações básicas

image

Sem a autorização temporária do STS, é necessário ativar o recurso de web tracking no Logstore. Isso permite gravações anônimas a partir de navegadores e pode gerar dados incorretos. As etapas a seguir descrevem como o plug-in STS envia logs:

  1. Um navegador solicita uma credencial de identidade temporária (token STS) a um servidor de negócios.

  2. O servidor de serviços solicita um token STS ao serviço STS.

    1. Um par de AccessKey do usuário do Resource Access Management (RAM) está configurado no servidor, e o usuário RAM possui a política AliyunSTSAssumeRoleAccess anexada.

    2. O servidor usa o par de AccessKey do usuário RAM para chamar a operação AssumeRole do STS e obter o token STS da função RAM. Utilize o parâmetro Policy do AssumeRole para restringir as permissões de diferentes tokens STS com base no usuário ou dispositivo.

  3. O STS retorna um token STS ao servidor de negócios.

  4. O servidor de serviços devolve o token STS ao navegador.

  5. O navegador utiliza o token STS obtido para assumir a função RAM e envia os logs coletados para o Logstore.

  6. O Simple Log Service retorna uma resposta ao navegador após o envio do log.

Pré-requisitos

Etapa 1: Instale e configure o SDK

Importante
  • Este tópico utiliza o método npm para instalar o SDK de web tracking para JavaScript e coletar logs de sites. Caso prefira usar o método Alibaba Cloud CDN, consulte WebTracking JavaScript SDK.

  1. Instale o Node.js.

  2. Execute o comando abaixo no servidor de negócios para instalar as dependências.

    npm install --save @aliyun-sls/web-track-browser
    npm install --save @aliyun-sls/web-sts-plugin
  3. Adicione o código a seguir ao seu programa para configurar o SDK.

    import SlsTracker from '@aliyun-sls/web-track-browser'
    import createStsPlugin from '@aliyun-sls/web-sts-plugin'
    
    const opts = {
      host: '${host}', // The Simple Log Service endpoint for the region. Example: cn-hangzhou.log.aliyuncs.com.
      project: '${project}', // The name of the project. 
      logstore: '${logstore}', // The name of the Logstore. 
      time: 10, // The interval at which logs are sent. Default value: 10. Unit: seconds. 
      count: 10, // The maximum number of logs that can be sent in each request. Default value: 10. 
      topic: 'topic',// The custom topic of logs. 
      source: 'source',
      tags: {
        tags: 'tags',
      },
    }
    
    const stsOpt = {
      accessKeyId: '',
      accessKeySecret: '',
      securityToken: '',
      // The following is a simple example of an STS token refresh function.
      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)
                  // The purpose of the function is to configure the temporary key and token of stsOpt. 
                  stsOpt.accessKeyId = credential.AccessKeyId
                  stsOpt.accessKeySecret = credential.AccessKeySecret
                  stsOpt.securityToken = credential.SecurityToken
                  resolve()
                } else {
                  reject('Wrong status code.')
                }
              }
            }
          }),
      // refreshSTSTokenInterval: 300000,
      // stsTokenFreshTime: undefined,
    }
    
    // Create a tracker.
    const tracker = new SlsTracker(opts)
    // Create the STS plug-in.
    const stsPlugin = createStsPlugin(stsOpt)
    // Use the STS plug-in.
    tracker.useStsPlugin(stsPlugin)
    
    // Assume that you want to upload a single log.
    tracker.send({
      eventType:'view_product',
      productName: 'Tablet',
      price: 500
    })
    

    A tabela a seguir descreve os parâmetros de web tracking.

    Parâmetro

    Obrigatório

    Descrição

    host

    Sim

    Endpoint da região onde o Simple Log Service está localizado. Neste exemplo, utiliza-se o endpoint do Simple Log Service para a região China (Hangzhou). Substitua o valor pelo endpoint real. Para mais informações, consulte Endpoints.

    project

    Sim

    Nome do projeto.

    logstore

    Sim

    Nome do Logstore.

    time

    Não

    Intervalo de envio dos logs. Valor padrão: 10. Unidade: segundos.

    count

    Não

    Quantidade máxima de logs enviados por requisição. Valor padrão: 10.

    topic

    Não

    Tópico dos logs. Defina um valor personalizado para identificá-los.

    source

    Não

    Origem dos logs. Especifique um valor personalizado para identificação.

    tags

    Não

    Tags personalizadas para identificar os logs.

    A tabela abaixo detalha os parâmetros do STS.

    Parâmetro

    Obrigatório

    Descrição

    • accessKeyId

    • accessKeySecret

    • securityToken

    Sim

    • O servidor de negócios utiliza o par de AccessKey do usuário RAM para invocar a operação AssumeRole. Os parâmetros de resposta incluem AccessKeySecret, AccessKeyId e SecurityToken.

    • Nos parâmetros de entrada da operação AssumeRole, DurationSeconds define a validade do token, enquanto Policy determina o escopo de permissões.

    refreshSTSToken

    Sim

    Função que obtém periodicamente novos tokens STS para atualizar os campos de credencial. Compatível com Promise e funções assíncronas.

    refreshSTSTokenInterval

    Não

    Intervalo de atualização dos tokens, em milissegundos. Valor padrão: 300.000 (5 minutos).

    stsTokenFreshTime

    Não

    Timestamp da aquisição mais recente do token. Não é necessário definir este parâmetro.

Referências

Perguntas frequentes

O SDK inicia sem erros, mas ao enviar logs, exibe o erro TypeError: Cannot read properties of undefined (reading 'sigBytes'). O que fazer nessa situação?

Causa provável: problema de criptografia do CryptoJS. Como é difícil modificar pacotes de terceiros, recomenda-se usar o web tracking para gravações não autenticadas. Para mais detalhes, consulte Coletar logs do lado do cliente com WebTracking.