Faça o upload em massa de arquivos de tabela de símbolos para um bucket do OSS designado ao RUM. Após o upload, os arquivos ficam disponíveis no console RUM em . Use essas tabelas de símbolos para analisar stack traces de exceções.
Pré-requisitos
Crie uma aplicação RUM e obtenha o respectivo ID da aplicação. Para mais informações, consulte Integrate a web & H5 application, Integrate a mini program e Monitor an Android application.
Crie um AccessKey. Para mais informações, consulte Create an AccessKey.
Anexe a política AliyunSTSAssumeRoleAccess ao AccessKey. Para mais informações, consulte AliyunSTSAssumeRoleAccess.
Tenha um cliente OSS disponível. O OSS suporta uploads de arquivos por meio de multi-language SDKs e da ferramenta de linha de comando ossutil.
-
Ative o recurso de upload em massa do OSS. Para isso, execute as etapas a seguir:
Na página Application Settings, na seção File Management, ative a opção Enable OSS batch upload.
Observações de uso
-
Use obrigatoriamente o bucket do OSS específico da região fornecido pelo RUM. Esse bucket corresponde à região da sua aplicação RUM. A lista a seguir apresenta os buckets disponíveis por região:
China (Hangzhou) (cn-hangzhou):
arms-rum-sourcemap-hzSingapore (ap-southeast-1):
arms-rum-sourcemap-sgUS (Silicon Valley) (us-west-1):
arms-rum-sourcemap-usw
-
Caminho de destino para uploads no OSS:
${uid}/${pid}/${version}/Importanteuidé o ID da sua conta Alibaba Cloud (conta principal),pidé o ID da aplicação RUM eversioné uma versão personalizada da tabela de símbolos.Para iOS, empacote os arquivos .dSYM em um arquivo ZIP antes do upload. Após o envio, o RUM analisa automaticamente o UUID do arquivo .dSYM.
O RUM oferece os seguintes métodos para upload em massa de tabelas de símbolos:
Upload via CLI ossutil
Antes de usar o ossutil para upload, configure suas credenciais de acesso. Para mais informações, consulte Configure ossutil.
Upload em massa de um diretório local
Formato do comando:
ossutil cp -r ${localfolder}/ oss://${bucket}/${uid}/${pid}/${version}/
Exemplo:
ossutil cp -r localfolder/ oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/
Upload de um arquivo local
Formato do comando:
./ossutil64 cp ${examplefile} oss://${bucket}/${uid}/${pid}/${version}/
Exemplo:
./ossutil64 cp examplefile.js.map oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/
Upload via SDK do OSS
O exemplo abaixo usa o SDK Python para enviar o arquivo examplefile.js.map. O UID é 1981000187653069, o PID é ji7ex7ti31@f1fadb692e6cdc8 e a versão é 1.0.0.
Para exemplos em outras linguagens, consulte SDK reference.
# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# Set the endpoint to the one that corresponds to the region where your bucket is located. For example, if your bucket is in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
# Set the bucket name.
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'arms-rum-sourcemap-hz')
# The file must be opened in binary mode.
# Specify the full path of the local file. If you do not specify a full path, the file is uploaded from the directory where the sample program is run.
key = '1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/'
bucket.put_object_from_file(key + 'examplefile.js.map', 'D:\\localpath\\examplefile.js.map')
Integração com pipeline de CI/CD
Integre a ferramenta de linha de comando ossutil ou um SDK do OSS ao seu pipeline de CI/CD para enviar os arquivos de tabela de símbolos gerados durante as builds para o bucket do OSS especificado.
Observações sobre empacotamento de .dSYM para iOS
Para enviar tabelas de símbolos .dSYM do iOS, empacote um ou mais arquivos .dSYM em um único arquivo ZIP. Por exemplo, se um diretório contiver dois arquivos de tabela de símbolos, AlibabaCloudRUM.framework.dSYM e iOSDemo.app.dSYM, a estrutura do diretório será a seguinte:
.
├── 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 deste diretório em um arquivo ZIP chamado test.zip. O processo de compactação e a saída são mostrados abaixo:
» zip -r test.zip *.dSYM
adding: AlibabaCloudRUM.framework.dSYM/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/aarch64/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/Relocations/aarch64/AlibabaCloudRUM.yml (deflated 90%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/DWARF/ (stored 0%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Resources/DWARF/AlibabaCloudRUM (deflated 71%)
adding: AlibabaCloudRUM.framework.dSYM/Contents/Info.plist (deflated 52%)
adding: iOSDemo.app.dSYM/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/Resources/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/aarch64/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/Resources/Relocations/aarch64/iOSDemo.yml (deflated 89%)
adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/ (stored 0%)
adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/iOSDemo.txt (deflated 72%)
adding: iOSDemo.app.dSYM/Contents/Resources/DWARF/iOSDemo (deflated 72%)
adding: iOSDemo.app.dSYM/Contents/Info.plist (deflated 52%)
Faça o upload do arquivo test.zip gerado.
O caminho de destino do upload no OSS deve incluir uma versão.
Erros comuns
Mensagem de erro: Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, ErrorMessage="You have no right to access this object because of bucket acl."
Caso receba um erro 403, verifique se a conta associada ao seu AccessKey ativou a opção Enable OSS batch upload no console, conforme descrito em Prerequisites. Essa permissão é isolada no nível de subconta. Os uploads exigem um AccessKey de uma conta ou subconta que tenha esse recurso habilitado.