出力パスに変数を使用すると、処理対象のオブジェクトごとに一意の名前を動的に生成できます。変数を使用しない場合、複数の処理タスクが同一の出力パスへ書き込むと、互いに上書きされてしまいます。これは、多数のソースオブジェクトを同時に処理するバッチジョブやトリガー駆動型のワークフローにおいてよく見られる問題です。
たとえば、動画フレーム抽出タスクの出力パスを oss://test-bucket/{dirname}/{barename}_output.{autoext} と設定します。OSS は処理時に変数を解決するため、各ソースオブジェクトに対して一意の名前を持つ出力オブジェクトが生成されます。
変数の使用可能な場所
変数は、以下のコンテキストで使用できます:
| コンテキスト | 変数の指定場所 |
|---|---|
| タスク(OSS コンソール) | 出力パス欄 |
| バッチ処理(OSS コンソール) | 処理済みオブジェクトの出力パス欄 |
| トリガー(OSS コンソール) | トリガー作成時の出力パス欄 |
| `sys/saveas` パラメーター(API) | b オプションおよび o オプション |
| `TargetURI` パラメーター(API) | データ処理タスクの完全な出力パス |
コンソールでの使用例
タスク:ドキュメントを JPG イメージに変換します。出力パスを oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext} と設定します。タスク実行中に {autoext} は jpg に解決され、処理済みオブジェクトは oss://test-bucket/output/<ソースオブジェクトのディレクトリ>/<ソースオブジェクト名>/<イメージのシリアル番号>.jpg に保存されます。
バッチ処理:複数の動画から同時に PNG フレームをキャプチャします。出力パスを oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext} と設定します。{autoext} は png に解決され、フレームは oss://test-bucket/output/<ソース動画のディレクトリ>/<ソース動画名>/<フレームのシーケンス番号>.png に保存されます。
トリガー:ドキュメントを JPG イメージに変換するトリガーを作成します。出力パスを oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext} と設定します。ソースバケットに新規オブジェクトが追加されるたびにタスクが起動し、出力は oss://test-bucket/output/<ソースオブジェクトのディレクトリ>/<ソースオブジェクト名>/<イメージのシーケンス番号>.jpg に保存されます。
API での使用例
`sys/saveas` パラメーター:b オプションおよび o オプションでは変数がサポートされています。example.docx の 1~10 ページを PNG イメージに変換する場合、sys/saveas を以下のように設定します:
b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw以下:
e2J1Y2tldH0は{bucket}の Base64 エンコード値 — ソースオブジェクトと同じバケットに保存されますZG9jX2ltYWdlcy97aW5kZXh9LnBuZwはdoc_images/{index}.pngの Base64 エンコード値 — 出力パスはdoc_images/<ページ番号>.pngとなります
`TargetURI` パラメーター: CreateOfficeConversionTask を呼び出す際、TargetURI を、ファイル拡張子を含む完全な出力パスに設定します。変数がサポートされています。例: oss://test-bucket/output/{dirname}/{barename}/{index}.jpg。
注意事項
バッチ処理ジョブおよびトリガータスクの場合:出力パスが
/で終わらない場合は、オブジェクト名に少なくとも 1 つの変数を含める必要があります。それ以外の場合、処理済みオブジェクトが互いに上書きされます。データ処理タスクの場合:出力パスは
/で終わってはならず、代わりに変数で終わっても構いません。
利用可能な変数
変数は、ソースオブジェクトおよびリクエスト送信時刻に基づいて解決されます。以下の表に、各処理タイプで利用可能な変数を示します:
| 変数 | リクエスト送信時刻 | IMG | ドキュメント変換 | メディア処理 |
|---|---|---|---|---|
t_year | はい | — | — | — |
t_mon | はい | — | — | — |
t_day | はい | — | — | — |
t_hour | はい | — | — | — |
t_min | はい | — | — | — |
t_sec | はい | — | — | — |
bucket | — | あり | — | — |
key | — | はい | — | — |
dirname | — | はい | — | — |
barename | — | はい | — | — |
basename | — | はい | — | — |
ext | — | はい | — | — |
year | — | はい | — | — |
mon | — | はい | — | — |
day | — | はい | — | — |
hour | — | はい | — | — |
min | — | はい | — | — |
sec | — | はい | — | — |
autoext | — | — | はい | はい |
index | — | — | あり(ページ番号/シートサブインデックス) | あり(セグメントのシーケンス) |
sheetname | — | — | はい | — |
sheetindex | — | — | はい | — |
sheetsubindex | — | — | はい | — |
streamindex | — | — | — | はい |
resolution | — | — | — | はい |
リクエスト送信時刻の変数
これらの変数は、同期または非同期のいずれかの方法でリクエストが送信された時点の時刻に解決されます。
リファレンス:リクエスト送信時刻 2022-09-01T02:06:57.798Z
| 変数 | 説明 | 形式 | 例 |
|---|---|---|---|
t_year | リクエスト送信時の年 | yyyy | 2022 |
t_mon | リクエスト送信時の月 | mm | 09 |
t_day | リクエスト送信時の日 | dd | 01 |
t_hour | リクエスト送信時の時 | HH | 02 |
t_min | リクエスト送信時の分 | MM | 06 |
t_sec | 2番目のリクエストが送信されました。 | SS | 57 |
適用対象:データ処理タスク(同期および非同期リクエスト)。
IMG 変数
これらの変数は、ソースオブジェクトのパスおよびアップロード時刻に基づいて解決されます。
リファレンス:ソースオブジェクト oss://test-bucket/path1/path2/name.png、アップロード時刻 2022-04-22 14:38:25
| 変数 | 説明 | 例 |
|---|---|---|
bucket | ソースバケットの名前 | test-bucket |
key | ソースオブジェクトのフルネーム(パスおよび拡張子を含む) | path1/path2/name.png |
dirname | ソースオブジェクトのディレクトリパス | path1/path2 |
barename | ソースオブジェクトの名前(拡張子を除く) | name |
basename | ソースオブジェクトの名前(拡張子を含む) | name.png |
ext | ソースオブジェクトの拡張子(MIME タイプまたは key 変数から導出) | png |
year | ソースオブジェクトのアップロード年 | 2022 |
mon | ソースオブジェクトのアップロード月 | 04 |
day | ソースオブジェクトのアップロード日 | 22 |
hour | ソースオブジェクトのアップロード時 | 14 |
min | ソースオブジェクトのアップロード分 | 38 |
sec | 2番目にソースオブジェクトがアップロードされました。 | 25 |
key、dirname、barename、または basename のみを出力オブジェクト名として設定しないでください。これにより、ソースオブジェクトが上書きされるか、バッチ処理中に処理タスクがループする可能性があります。
適用対象:IMG 処理タスク。
例:ソースオブジェクトが oss://test-bucket/videos/2024/clip.mp4 の場合、パス oss://output-bucket/{dirname}/{barename}_processed.{ext} は oss://output-bucket/videos/2024/clip_processed.mp4 に解決されます。
ドキュメント変換変数
これらの変数は、ソースオブジェクトのドキュメント構造(ページ番号、シート名)に基づいて解決されます。
リファレンス:シート名が sheet1 の Excel オブジェクトを JPG に変換
| 変数 | 説明 | 例 |
|---|---|---|
autoext | 処理済みオブジェクトの拡張 | png |
index | コンテンツのシーケンスインデックス。Word、PDF、PPT オブジェクトの場合はページ番号。Excel オブジェクトの場合は sheetindex_sheetsubindex。行番号は 1 から開始します。 | Word/PDF/PPT: 1_1;Excel: 1_1 |
sheetname | Excel オブジェクト内のシート名 | sheet1 |
sheetindex | Excel オブジェクト内のシートのインデックス。最小値:1。 | 1 |
sheetsubindex | Excel オブジェクト内のシートのサブインデックス。最小値:1。 | 1 |
適用対象:ドキュメント変換タスク(Word、PDF、PPT、Excel)。
例:出力パス oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext} を指定して、reports/Q1.docx の 3 ページを変換すると、oss://test-bucket/output/reports/Q1/3_1.jpg が出力されます({autoext} は jpg に解決されます)。
メディア処理変数
これらの変数は、トランスコード出力のプロパティに基づいて解決されます。
リファレンス:動画 video.mp4 を 1920x1080 解像度で TS 形式にマルチパートトランスコード
| 変数 | 説明 | 例 |
|---|---|---|
autoext | 処理されたオブジェクトの拡張 | ts |
index | ソースオブジェクト内のコンテンツのシーケンスを指定するインデックス。行番号は 1 から開始します。マルチパートトランスコードおよびスナップショットキャプチャで使用されます。 | 1 |
streamindex | 音声または動画ストリームの ID。最小値:0。 | 0 |
resolution | 処理済みオブジェクトの解像度。動画のみで利用可能です。 | 1920x1080 |
適用対象:メディア処理タスク(動画トランスコーディング、マルチパートトランスコーディング、スナップショットキャプチャ)。
例:出力パス oss://test-bucket/output/{barename}_{resolution}_{index}.{autoext} を指定して、video.mp4 の 2 セグメント目を 1920x1080 解像度でトランスコードすると、oss://test-bucket/output/video_1920x1080_2.ts が出力されます。
autoextおよびindex変数は、ドキュメント変換およびメディア処理の両方で使用されますが、indexのセマンティクスはそれぞれ異なります。ドキュメント変換ではページ番号またはシートサブインデックスを表し、メディア処理では出力セグメントのシーケンス番号を表します。
OSS API の使用
高度なカスタマイズが必要なワークフローでは、RESTful API を直接呼び出します。直接の API 呼び出しでは、コード内に署名計算を実装する必要があります。
ソースオブジェクトを処理するには、PostObject リクエストで処理パラメーターまたはスタイルパラメーターを指定します。詳細については、「sys/saveas」をご参照ください。
以下のすべての例では、非同期処理タスクを送信するために x-oss-async-process ヘッダーを使用しています。b オプションおよび o オプションでは、sys/saveas 内で Base64 エンコードされた変数式が受け付けられます。
例 1:ドキュメント変換
example.docx の 1~10 ページを PNG イメージに変換し、ソースバケット内の doc_images/<ページ番号>.png に保存します。
POST /example.docx?x-oss-async-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS qn6q**************:77Dv****************
x-oss-async-process=doc/convert,pages_MS0xMA,target_png,source_docx|sys/saveas,b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZwパラメーター:
| パラメーター | 値 | 説明 |
|---|---|---|
pages_MS0xMA | Base64(1 to 10) | 1~10 ページを変換 |
target_png | — | 出力フォーマット:PNG |
source_docx | — | ソースフォーマット:DOCX |
b_e2J1Y2tldH0 | Base64({bucket}) | ソースオブジェクトと同じバケットに保存 |
o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw | Base64(doc_images/{index}.png) | 出力パスパターン:doc_images/<ページ番号>.png |
例 2:動画トランスコーディング
example.avi を H.265 エンコーディングで 1920x1080 解像度の MP4 にトランスコードし、ソースバケットの output.<autoext> として保存します。
POST /example.avi?x-oss-async-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS qn6q**************:77Dv****************
x-oss-async-process=video/convert,f_mp4,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1|sys/saveas,b_e2J1Y2tldH0,o_b3V0cHV0LnthdXRvZXh0fQパラメーター:
| パラメーター | 値 | 説明 |
|---|---|---|
f_mp4 | — | 出力コンテナ形式:MP4 |
vcodec_h265 | — | ビデオエンコーディング:H.265 |
s_1920x1080 | — | 解像度:1920x1080 |
vb_2000000 | — | ビデオビットレート:2 Mbit/s |
fps_30 | — | フレームレート:30 fps |
acodec_aac | — | 音声エンコード形式:AAC |
ab_100000 | — | 音声ビットレート:100 Kbit/s |
sn_1 | — | 字幕ストリームを無効化 |
b_e2J1Y2tldH0 | Base64({bucket}) | ソースオブジェクトと同じバケットに保存 |
o_b3V0cHV0LnthdXRvZXh0fQ | Base64(output.{autoext}) | 出力パス:output.mp4({autoext} から拡張子を解決) |