指定された RUM OSS バケットに、シンボルテーブルファイルを一括アップロードできます。アップロード後、ファイルは RUM コンソールの に表示されます。その後、これらのシンボルテーブルを使用して、例外のスタックトレースを解析できます。
前提条件
-
RUM アプリケーションを作成し、そのアプリケーション ID を取得していること。詳細については、「Web & H5 アプリケーションの統合」、「ミニプログラムの統合」、および「Android アプリケーションの監視」をご参照ください。
-
AccessKey を作成していること。詳細については、「AccessKey の作成」をご参照ください。
-
AccessKey に AliyunSTSAssumeRoleAccess ポリシーをアタッチしていること。詳細については、「AliyunSTSAssumeRoleAccess」をご参照ください。
-
OSS クライアントを使用していること。OSS は、複数言語のSDKおよびossutil コマンドラインツールによるファイルアップロードをサポートしています。
-
OSS 一括アップロード機能を有効にしていること。有効にするには、次の手順を実行します。
アプリケーションの設定 ページの [File Management] セクションで、[Enable OSS batch upload] スイッチをオンにします。
注意事項
-
RUM が提供するリージョン固有の OSS バケットを使用する必要があります。バケットは、RUM アプリケーションのリージョンに対応しています。リージョン別の利用可能なバケットは以下のとおりです。
-
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
-
-
OSS アップロードの送信先パス:
${uid}/${pid}/${version}/重要-
uidは Alibaba Cloud アカウント (メインアカウント) の ID、pidは RUM アプリケーション ID、versionはカスタムシンボルテーブルバージョンです。 -
iOS の場合、.dSYM ファイルを ZIP アーカイブに圧縮してアップロードする必要があります。アップロード後、RUM は .dSYM ファイルの UUID を自動的に解析します。
-
RUM では、次の方法でシンボルテーブルを一括アップロードできます。
ossutil CLI によるアップロード
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、バージョンは1.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())
# エンドポイントを、バケットが配置されているリージョンに対応するエンドポイントに設定します。例えば、バケットがChina (Hangzhou) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケット名を設定します。
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パイプラインとの統合
ossutil コマンドラインツールまたは OSS SDK を CI/CD パイプラインに統合することで、ビルド時に生成されたシンボルテーブルファイルを指定された OSS バケットにアップロードできます。
iOS .dSYM パッケージ化に関する注意事項
iOS .dSYM シンボルテーブルをアップロードするには、1つ以上の .dSYM ファイルを1つの ZIP ファイルに圧縮する必要があります。例えば、ディレクトリにAlibabaCloudRUM.framework.dSYMとiOSDemo.app.dSYMという2つのシンボルテーブルファイルが含まれている場合、ディレクトリ構造は次のようになります。
.
├── 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 ファイルに圧縮します。圧縮プロセスと出力は次のとおりです。
» 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 アップロードの送信先パスには、バージョンを 必ず 含める必要があります。
一般的なエラー
エラーメッセージ: Error: oss: service returned error: StatusCode=403, ErrorCode=AccessDenied, ErrorMessage="You have no right to access this object because of bucket acl."
403 エラーが表示された場合、AccessKey に関連付けられたアカウントが、「前提条件」で説明されているように、コンソールで [Enable OSS batch upload] を有効にしているかどうかを確認してください。この権限は、サブアカウントレベルで分離されています。アップロードには、この機能を有効にしたアカウントまたはサブアカウントの AccessKey が必要です。