All Products
Search
Document Center

Application Real-Time Monitoring Service:Bulk upload symbol tables

Last Updated:Aug 04, 2026

You can upload symbol table files in bulk to a designated RUM OSS bucket. After the upload, the files appear in the RUM console under Application Settings > File Management. You can then use these symbol tables to parse stack traces for exceptions.

Prerequisites

Usage notes

  • You must use the region-specific OSS bucket provided by RUM. The bucket corresponds to the region of your RUM application. The following list shows the available buckets by region:

    • China (Hangzhou) (cn-hangzhou): arms-rum-sourcemap-hz

    • Singapore (ap-southeast-1): arms-rum-sourcemap-sg

    • US (Silicon Valley) (us-west-1): arms-rum-sourcemap-usw

  • Destination path for OSS uploads: ${uid}/${pid}/${version}/

    Important
    • uid is the ID of your Alibaba Cloud account (primary account), pid is the RUM application ID, and version is a custom symbol table version.

    • For iOS, you must package .dSYM files into a ZIP archive for upload. After the upload, RUM automatically parses the UUID of the .dSYM file.

RUM supports the following methods for uploading symbol tables in bulk:

Upload using the ossutil CLI

Important

Before uploading with ossutil, you must configure your access credentials. For more information, see Configure ossutil.

Bulk upload a local directory

Command format:

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

Example:

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

Upload a local file

Command format:

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

Example:

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

Upload using an OSS SDK

The following example uses the Python SDK to upload the examplefile.js.map file. The UID is 1981000187653069, the PID is ji7ex7ti31@f1fadb692e6cdc8, and the version is 1.0.0.

For examples in other languages, see the 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')

Integrate with a CI/CD pipeline

You can integrate the ossutil command-line tool or an OSS SDK into your CI/CD pipeline to upload the symbol table files generated during builds to the specified OSS bucket.

iOS .dSYM packaging notes

To upload iOS .dSYM symbol tables, you must package one or more .dSYM files into a single ZIP file. For example, if a directory contains two symbol table files, AlibabaCloudRUM.framework.dSYM and iOSDemo.app.dSYM, the directory structure is as follows:

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

Compress the .dSYM files in this directory into a ZIP file named test.zip. The compression process and output are as follows:

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

Upload the generated test.zip file.

Important

The OSS upload destination path must include a version.

Common errors

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

If you receive a 403 error, check whether the account associated with your AccessKey has enabled Enable OSS batch upload in the console, as described in Prerequisites. This permission is isolated at the sub-account level. Uploads require an AccessKey from an account or sub-account that has this feature enabled.