批量上传符号表

通过OSS将符号表文件批量上传到指定的RUM OSS Bucket下,即可在用户体验监控控制台的应用设置 > 文件管理中看到上传的符号表文件,后续您可以在异常明细中使用已上传的符号表对异常堆栈进行解析。

前提条件

  • 已创建用户体验监控应用,并获取应用Pid。具体操作,请参见接入Web & H5应用接入小程序接入移动应用

  • 已创建AccessKey。具体操作,请参见创建AccessKey

  • 对上述AccessKey已赋予AliyunSTSAssumeRoleAccess权限,具体操作,请参见AliyunSTSAssumeRoleAccess

  • 已有OSS客户端,目前OSS支持通过多语言SDKOSS命令行工具(ossutil)上传文件。

  • 已开通OSS文件批量上传功能。具体开通步骤如下:

    应用设置页面的文件管理区域,单击开启OSS批量上传文件开关。

    image

注意事项

  • 必须使用RUM按地域提供的OSS Bucket,地域和用户体验监控应用所在的地域相关,各地域Bucket列表如下:

    • 中国杭州地域(cn-hangzhou):arms-rum-sourcemap-hz

    • 新加坡地域(ap-southeast-1):arms-rum-sourcemap-sg

    • 美国硅谷地域(us-west-1):arms-rum-sourcemap-usw

  • 上传到OSS的目标路径:${uid}/${pid}/${version}/

    重要
    • uid是阿里云账号(主账号)ID,pid是用户体验监控应用ID,version是自定义的符号表版本。

    • iOS的.dSYM文件上传时需要将.dSYM打包成ZIP压缩包上传,上传后用户体验监控会自动解析.dSYM符号表文件的UUID。

用户体验监控目前支持通过以下几种方式批量上传符号表,您可以根据需求选择其中一种:

使用ossutil命令行工具上传

重要

使用ossutil上传时,需要提前配置访问凭证,具体操作,请参见配置ossutil

指定本地目录批量上传

上传命令格式:

ossutil cp -r ${localfolder}/ oss://${bucket}/${uid}/${pid}/${version}/

示例:

ossutil cp -r localfolder/ oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/

指定本地文件上传

上传命令格式:

./ossutil64 cp ${examplefile} oss://${bucket}/${uid}/${pid}/${version}/

示例:

./ossutil64 cp examplefile.js.map oss://arms-rum-sourcemap-hz/1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/

使用OSS SDK上传

以下使用Python SDK举例,指定上传examplefile.js.map文件,UID1981000187653069,PIDji7ex7ti31@f1fadb692e6cdc8,Version1.0.0

示例代码如下,其他语言的操作请参见SDK参考

# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'arms-rum-sourcemap-hz')

# 必须以二进制的方式打开文件。
# 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
key = '1981000187653069/ji7ex7ti31@f1fadb692e6cdc8/1.0.0/'
bucket.put_object_from_file(key + 'examplefile.js.map', 'D:\\localpath\\examplefile.js.map')

集成CI/CD流水线自动批量上传

CI/CD流水线可集成OSS命令行工具或OSS SDK,将编译生成的符号表文件通过上述工具上传到指定的OSS Bucket下。

iOS .dSYM符号表打包注意事项

上传iOS .dSYM符号表必须将单个或多个.dSYM文件打包成一个ZIP文件进行上传,例如在一个目录下存在 AlibabaCloudRUM.framework.dSYMiOSDemo.app.dSYM两个符号表文件,文件目录如下:

.
├── 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

将此目录下的.dSYM文件打包压缩为test.zip文件,压缩过程和结果如下:

» 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%)

将最终生成的test.zip文件上传即可。

重要

OSS上传目标路径需要添加版本号(version)。

常见错误

报错内容:Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, ErrorMessage="You have no right to access this object because of bucket acl."

如果报403错误码,请检查当前您使用的AccessKey对应的账号是否已参考前提条件在控制台侧开通开启OSS批量上传文件。该权限为子账号级别隔离,只有在控制台侧开通该功能的账号对应的AccessKey才具有该权限。