Quando sua aplicação utiliza ofuscação ou minificação de código, os stack traces de falhas e erros tornam-se ilegíveis. As tabelas de símbolos (source maps do JavaScript, arquivos dSYM do iOS) restauram esses rastreamentos para nomes de funções, caminhos de arquivo e números de linha legíveis. Para enviar tabelas de símbolos em massa, em vez de uma por vez pelo console, envie-as diretamente ao bucket do Object Storage Service (OSS) fornecido pelo sub-serviço Real User Monitoring (RUM) do Application Real-Time Monitoring Service (ARMS).
Estão disponíveis três métodos de upload: ossutil, SDKs do OSS e pipelines de CI/CD.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma aplicação integrada ao RUM com ID gerado. Para mais detalhes, consulte Integrar uma aplicação web ou HTML5, Integrar um mini programa ou Monitorar aplicativos
Um par de AccessKey com a política AliyunSTSAssumeRoleAccess anexada. Para mais detalhes, consulte Criar um par de AccessKey
Um cliente OSS instalado: ossutil ou SDK do OSS
-
A opção Enable OSS batch upload ativada na seção File Management da aba Application Settings

Formato do bucket e caminho do OSS
Selecione o bucket da sua região
Use o bucket correspondente à região onde sua aplicação está hospedada:
|
Região |
Bucket |
|
China (Hangzhou) |
|
|
Singapura |
|
|
EUA (Vale do Silício) |
|
Defina o caminho de upload
Envie os arquivos para a seguinte estrutura de caminho:
<uid>/<pid>/<version>/
|
Espaço reservado |
Descrição |
Exemplo |
|
|
ID da conta Alibaba Cloud |
|
|
|
ID da aplicação RUM |
|
|
|
Versão da tabela de símbolos |
|
Para aplicativos iOS, compacte os arquivos dSYM em um arquivo .zip antes de fazer o upload. O RUM analisa automaticamente o UUID do arquivo compactado. Consulte Enviar arquivos dSYM para obter detalhes.
Upload com ossutil
O ossutil é uma ferramenta de linha de comando para o OSS. Ele oferece suporte a uploads de diretórios e é o método mais simples para operações em massa.
Configure as credenciais de acesso do ossutil antes de prosseguir. Para mais detalhes, consulte Configurar o ossutil.
Envie um diretório
Envie todas as tabelas de símbolos de um diretório local:
ossutil cp -r <local-directory>/ oss://<bucket>/<uid>/<pid>/<version>/
Exemplo:
ossutil cp -r ./sourcemaps/ oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/
Envie um único arquivo
./ossutil64 cp <file-path> oss://<bucket>/<uid>/<pid>/<version>/
Exemplo:
./ossutil64 cp examplefile.js.map oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/
Upload com SDKs do OSS
Use um SDK do OSS quando precisar de controle programático ou quiser integrar os uploads ao código da sua aplicação. Todos os exemplos de SDK seguem o mesmo padrão: autenticação via variáveis de ambiente, conexão com o bucket específico da região e envio dos arquivos para o caminho <uid>/<pid>/<version>/.
O exemplo abaixo em Python envia um arquivo source map chamado examplefile.js.map:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Authenticate using the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Connect to the China (Hangzhou) region bucket
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'arms-rum-sourcemap-hz')
# Build the destination path: <uid>/<pid>/<version>/<filename>
destination = '1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/examplefile.js.map'
# Upload the local file
bucket.put_object_from_file(destination, 'D:\\localpath\\examplefile.js.map')
Para outras linguagens, consulte Visão geral do SDK do OSS.
Integração com pipelines de CI/CD
Integre pipelines de CI/CD ao ossutil ou aos SDKs do OSS para enviar tabelas de símbolos ao bucket do OSS especificado.
Envio de arquivos dSYM
Para aplicativos iOS, compacte os arquivos dSYM antes do upload. O RUM extrai automaticamente o UUID de cada arquivo compactado.
-
Localize seus arquivos dSYM. Estrutura típica de diretório:
. ├── AlibabaCloudRUM.framework.dSYM │ └── Contents │ ├── Info.plist │ └── Resources │ ├── DWARF │ │ └── AlibabaCloudRUM │ └── Relocations │ └── aarch64 │ └── AlibabaCloudRUM.yml └── iOSDemo.app.dSYM └── Contents ├── Info.plist └── Resources ├── DWARF │ ├── iOSDemo │ └── iOSDemo.txt └── Relocations └── aarch64 └── iOSDemo.yml -
Compacte os arquivos dSYM em um arquivo
.zip:zip -r dsyms.zip *.dSYM -
Envie o arquivo compactado para o OSS. O caminho deve incluir a versão:
ossutil cp dsyms.zip oss://<bucket>/<uid>/<pid>/<version>/
Perguntas frequentes
O que significa "403 AccessDenied: You have no right to access this object because of bucket acl"?
Esse erro ocorre quando a opção Enable OSS batch upload não está ativada para sua conta. Para resolver:
Abra o console do ARMS e acesse sua aplicação.
Acesse a aba Application Settings.
Na seção File Management, ative a opção Enable OSS batch upload.
Somente contas com essa opção ativada podem fazer upload no bucket OSS do RUM. Para mais detalhes, consulte Pré-requisitos.