批量上傳符號表
通過OSS將符號表文件批量上傳到指定的RUM OSS Bucket下,即可在用戶體驗監(jiān)控控制臺的
中看到上傳的符號表文件,后續(xù)您可以在異常明細中使用已上傳的符號表對異常堆棧進行解析。前提條件
已創(chuàng)建用戶體驗監(jiān)控應(yīng)用,并獲取應(yīng)用Pid。具體操作,請參見接入Web & H5應(yīng)用、接入小程序和接入移動應(yīng)用。
已創(chuàng)建AccessKey。具體操作,請參見創(chuàng)建AccessKey。
對上述AccessKey已賦予AliyunSTSAssumeRoleAccess權(quán)限,具體操作,請參見AliyunSTSAssumeRoleAccess。
已開通OSS文件批量上傳功能。具體開通步驟如下:
在應(yīng)用設(shè)置頁面的文件管理區(qū)域,單擊開啟OSS批量上傳文件開關(guān)。
注意事項
必須使用RUM按地域提供的OSS Bucket,地域和用戶體驗監(jiān)控應(yīng)用所在的地域相關(guān),各地域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
是用戶體驗監(jiān)控應(yīng)用ID,version
是自定義的符號表版本。iOS的.dSYM文件上傳時需要將.dSYM打包成ZIP壓縮包上傳,上傳后用戶體驗監(jiān)控會自動解析.dSYM符號表文件的UUID。
用戶體驗監(jiān)控目前支持通過以下幾種方式批量上傳符號表,您可以根據(jù)需求選擇其中一種:
使用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
文件,UID為1981000187653069
,PID為ji7ex7ti31@f1fadb692e6cdc8
,Version為1.0.0
。
示例代碼如下,其他語言的操作請參見SDK參考。
# -*- coding: utf-8 -*-
import oss2
import os
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫B(tài)ucket名稱。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'arms-rum-sourcemap-hz')
# 必須以二進制的方式打開文件。
# 填寫本地文件的完整路徑。如果未指定本地路徑,則默認從示例程序所屬項目對應(yīng)本地路徑中上傳文件。
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.dSYM
和iOSDemo.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
文件,壓縮過程和結(jié)果如下:
? 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)。
常見錯誤
報錯內(nèi)容:Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, ErrorMessage="You have no right to access this object because of bucket acl."
如果報403錯誤碼,請檢查當前您使用的AccessKey對應(yīng)的賬號是否已參考前提條件在控制臺側(cè)開通開啟OSS批量上傳文件。該權(quán)限為子賬號級別隔離,只有在控制臺側(cè)開通該功能的賬號對應(yīng)的AccessKey才具有該權(quán)限。