タスク結果をポーリングする代わりに、HTTP コールバック URL または RocketMQ を設定して、EventBridge からタスク完了通知を受信できます。通知を受け取った後、結果クエリ API を一度呼び出して出力を取得します。
背景情報
Alibaba Cloud Model Studio は EventBridge と統合されており、設定されたイベントターゲットにタスク完了イベントを配信します。
非同期タスクが完了 (成功または失敗) すると、タスクのステータスと ID を含むタスク完了イベントが EventBridge にレポートされ、EventBridge はそれをターゲットに転送します。その他のイベントターゲットについては、「イベントターゲット」および「ターゲットサービスタイプ」をご参照ください。
ポーリングとイベント駆動型通知の比較
比較ディメンション | ポーリング | イベント駆動 |
|---|---|---|
レート制限 | 結果クエリ API にはレート制限 (20 QPS) があります | レート制限なし |
統合の複雑さ | シンプル—結果クエリ API をポーリングします。Text-to-Image や Text-to-Video などの一部のタスクでは、組み込みのポーリング機能を備えた SDK が提供されます。 | EventBridge で HTTP コールバックまたは RocketMQ を設定し、通知を解析します。 |
サーバーリソースの消費 | 頻繁なクエリによりサーバーリソースを消費します。 | リソース消費なし—EventBridge がプッシュします。 |
遅延 | ポーリング間隔に依存します。 | ほぼリアルタイム—完了後すぐにプッシュされます。 |
推奨事項 | 低同時実行数または遅延が許容されるシナリオ。 | 高同時実行数または遅延の影響を受けやすいシナリオ。 |
- HTTP コールバック URL:POST リクエストを受け入れる、パブリックネットワーク経由でアクセス可能なエンドポイント、または VPC エンドポイント。ほとんどのシナリオに適しています。
- RocketMQ:Message Queue for RocketMQ を介してイベントを消費します。高い信頼性が求められるシナリオに最適です。
選択肢 1:HTTP コールバック URL の設定
概要
Alibaba Cloud Model Studio がタスクを完了すると、タスク完了イベントが EventBridge にレポートされます。その後、EventBridge はこのイベントをコールバックエンドポイントにプッシュします。コールバックエンドポイントはイベントを解析して正常に処理されたタスク ID を抽出し、結果クエリ API を一度呼び出してタスクの出力を取得します。
メリット:直接ポーリングと比較して、このアプローチは不要なポーリングリクエストを回避し、リソース消費を削減し、結果クエリ API のレート制限への負荷を軽減します。
課金:EventBridge の課金。
たとえば、Text-to-Image で HTTP コールバック URL を使用した非同期呼び出しのフローは次のとおりです:
| ![]() |
操作手順
ステップ 1:HTTP コールバックエンドポイントの準備
ステップ 1:HTTP コールバックエンドポイントの準備
- リクエスト URL:パブリックネットワークまたは Alibaba Cloud VPC 経由でアクセス可能な HTTP URL。
- リクエストメソッド:
POST。 - リクエストボディ:非同期タスク完了イベントデータを含む
JSONフォーマット。正確なイベント構造は EventBridge コンソールで確認できます。例:
非同期タスク完了イベントのデータ構造を表示するにはクリックしてください
非同期タスク完了イベントのデータ構造を表示するにはクリックしてください
ステップ 2:EventBridge コンソールでのイベントのクエリ
ステップ 2:EventBridge コンソールでのイベントのクエリ
-
Alibaba Cloud アカウントにログインし、EventBridge コンソールに移動します。 [シンガポールリージョン]に切り替えます。 左側のナビゲーションウィンドウで、[イベントバス]を選択し、[デフォルト]をクリックしてクラウドサービスのデフォルトイベントバスに入ります。
Alibaba Cloud Model Studio は、デフォルトでデフォルトイベントバスを使用します。
-
[イベント追跡] をクリックし、クエリ条件を入力して、Alibaba Cloud Model Studio からの非同期タスク完了イベントを検索します。
- イベントソース:
acs.dashscopeを検索して選択します。これは、イベントが DashScope (Alibaba Cloud Model Studio の基盤となるモデルサービス) から発信されたことを示します。 - イベントタイプ:
dashscope:System:AsyncTaskFinishを検索して選択します。これは、非同期タスク完了イベントを示します。
- イベントソース:
- [詳細] をクリックすると、報告されたイベントの詳細が表示されます。
パラメーターの説明を表示するにはクリックしてください
パラメーターの説明を表示するにはクリックしてください
パラメーター | タイプ | 説明 | 値の例 |
|---|---|---|---|
datacontenttype | String | データフィールドのデータフォーマット。 |
|
aliyunaccountid | String | Alibaba Cloud アカウント ID。 | 123456789098**** |
aliyunpublishtime | String | イベントが受信された時間。 | 2020-11-19T21:04:42.179PRC |
data | Object | イベントの内容。発信元サービスによって定義された構造を持つ JSON オブジェクト。CloudEvents には、イベント発生時にイベントプロデューサーによって提供されるコンテキスト情報が data 内にカプセル化されて含まれる場合があります。 | |
data[].start_time | String | 非同期タスクの開始時刻。 フォーマット:yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:09 |
data[].end_time | String | 非同期タスクの完了時刻。 フォーマット:yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:16 |
data[].user_api_unique_key | String | 一意の API キー (タスク送信時に使用されたモデル API の 5 つの要素)。フォーマット:
|
|
data[].task_status | String | タスクのステータス
| SUCCEEDED |
data[].task_id | String | タスク ID | a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35 |
data[].region | String | タスクが実行されるリージョン | ap-southeast-1 |
data[].request_id | String | リクエスト ID | 108f38f5-xxxx-xxxx-xxxx-6504db9080b3 |
data[].api_key_id | String | API キー ID | 1234 |
data[].contain_result | Boolean | イベントに結果の詳細が含まれているかどうか。
| true |
data[].output_result | JSON | 結果の詳細。 |
|
aliyunoriginalaccountid | String | 元の Alibaba Cloud アカウント ID | 123456789098**** |
specversion | String | CloudEvents プロトコルのバージョン | 1.0 |
aliyuneventbusname | String | イベントを受信するイベントバスの名前 | default |
id | String | イベント ID—イベントを識別する一意の値。 | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
source | String | イベントソース。 イベントを提供するサービスで、何が発生したかを識別します。通常、イベントソースのタイプ、発行メカニズム、または生成プロセスが含まれます。送信者は、各イベントの | acs.dashscope |
time | String | イベントが生成された時間。 正確なイベント時間が不明な場合、CloudEvents プロデューサーは time を別の値 (例:現在時刻) に設定することがありますが、同じソースのすべてのプロデューサーは一貫した値を使用する必要があります。 | 2020-11-19T21:04:41+08:00 |
aliyunregionid | String | イベントを受信するリージョン。 | ap-southeast-1 |
type | String | イベントタイプ。 ソースに関連するイベントのタイプを記述します。ルーティング、イベントクエリ、およびポリシーの適用に使用されます。フォーマットはプロデューサーによって定義され、バージョン情報が含まれます。 | dashscope:System:AsyncTaskFinish |
ステップ 3:イベント転送ルールの設定
ステップ 3:イベント転送ルールの設定
- 左側のナビゲーションウィンドウで、[イベントルール] を選択し、[ルールを作成] をクリックします。
- 基本情報の設定: カスタムルール名と説明を入力します。
-
イベントパターン設定:転送するイベントを指定します。
-
イベントソース:
acs.dashscopeを検索して選択します。これは、イベントが Alibaba Cloud Model Studio から発生したことを示します。 -
イベントタイプ: 非同期タスク完了イベントを示す
dashscope:System:AsyncTaskFinishを検索して選択します。 -
パターン内容: 特定のイベントに一致するようにフィルター条件を設定します。 ステップ 2 で照会したイベント詳細のフィールドを使用します。 パターン構文については、「イベントパターン」をご参照ください。 例:
- デフォルト:イベントソースとタイプを選択すると、パターンはデフォルトで以下のように設定され、すべての
dashscope:System:AsyncTaskFinishイベントが転送されます。
- デフォルト:イベントソースとタイプを選択すると、パターンはデフォルトで以下のように設定され、すべての
-
イベントソース:
- フィールドによるフィルタリング:
user_api_unique_keyフィールドが:paraformer-8k-v2で終わるイベントのみを転送します。つまり、paraformer-8k-v2モデルのイベントのみです。イベントタイプはdashscope:System:AsyncTaskFinishです。
- イベントターゲットの設定:HTTP コールバック URL や RocketMQ メッセージキューなど、複数のイベントターゲットタイプをサポートしています。詳細については、ステップ 4 をご参照ください。
ステップ 4:イベントターゲットを HTTP コールバックエンドポイントに設定
ステップ 4:イベントターゲットを HTTP コールバックエンドポイントに設定
-
イベントターゲットの設定: イベントを HTTP コールバック URL に転送します。
- サービスタイプ:「HTTP」を選択します。
- URL:HTTP サービスエンドポイントを入力します。
- 本文:「完全なイベント」を選択します。
-
ネットワークタイプ:サービスエンドポイントに基づいて選択します。
- HTTP はパブリックネットワークとプライベートネットワークの両方をサポートしています。プライベートネットワークを選択した場合は、VPC、vSwitch、および SecurityGroup を設定します。
- OK をクリックしてルールを保存します。イベントターゲットが HTTP 形式で表示された場合、構成は正常に完了しました。 ルールの [イベントターゲット] 列に [HTTP (1)] と表示されます。
選択肢 2:RocketMQ の設定
概要
Alibaba Cloud Model Studio がタスクを完了すると、タスク完了イベントが EventBridge にレポートされます。EventBridge はイベントを Message Queue for RocketMQ に転送します。アプリケーションはメッセージキューをリッスンし、メッセージを消費して完了したタスク ID を抽出し、結果クエリ API を一度呼び出してタスクの出力を取得します。
メリット:HTTP コールバックアプローチとは異なり、RocketMQ はメッセージ配信を保証し、失敗時のリトライをサポートしているため、高いメッセージ信頼性が求められるシナリオに最適です。
課金:EventBridge の課金、RocketMQ の課金。
たとえば、Text-to-Image で RocketMQ を使用した非同期呼び出しのフローは次のとおりです:
| ![]() |
操作手順
ステップ 1:RocketMQ インスタンスの準備 (RocketMQ キューが既にある場合はスキップ)
ステップ 1:RocketMQ インスタンスの準備 (RocketMQ キューが既にある場合はスキップ)
-
RocketMQ コンソールに移動します。左側のナビゲーションウィンドウで、[インスタンス] を選択し、[インスタンスの作成] をクリックします。
インスタンス ID の例:
rmq-cn-nwy*******。 -
インスタンスの
Topicを作成し、カスタムのトピック名を入力します。 -
インスタンスの
Groupを作成し、カスタムのグループ名を入力します。
ステップ 2:EventBridge コンソールでのイベントのクエリ
ステップ 2:EventBridge コンソールでのイベントのクエリ
-
Alibaba Cloud アカウントにログインしてEventBridge コンソールに移動し、[シンガポールリージョン]に切り替えます。左側のナビゲーションウィンドウで、[イベントバス] を選択し、[default] をクリックして、クラウドサービスのデフォルトイベントバスに移動します。
Alibaba Cloud Model Studio は、デフォルトでデフォルトイベントバスを使用します。
-
[イベント追跡] をクリックし、クエリ条件を入力して、Alibaba Cloud Model Studio からの非同期タスク完了イベントを検索します。
- イベントソース:
acs.dashscopeを検索して選択します。これは、イベントが DashScope (Alibaba Cloud Model Studio の基盤となるモデルサービス) から発信されたことを示します。 - イベントタイプ:
dashscope:System:AsyncTaskFinishを検索して選択します。これは、非同期タスク完了イベントを示します。
- イベントソース:
- [詳細] をクリックすると、報告されたイベントの詳細を表示できます。
パラメーターの説明を表示するにはクリックしてください
パラメーターの説明を表示するにはクリックしてください
パラメーター | タイプ | 説明 | 値の例 |
|---|---|---|---|
datacontenttype | String | データフィールドのデータフォーマットです。 |
|
aliyunaccountid | String | Alibaba Cloud アカウント ID。 | 123456789098**** |
aliyunpublishtime | String | イベントが受信された時間。 | 2020-11-19T21:04:42.179PRC |
data | Object | イベントの内容。発信元サービスによって定義された構造を持つ JSON オブジェクト。CloudEvents には、イベント発生時にイベントプロデューサーによって提供されるコンテキスト情報が data 内にカプセル化されて含まれる場合があります。 | |
data[].start_time | String | 非同期タスクの開始時刻。 フォーマット:yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:09 |
data[].end_time | String | 非同期タスクの完了時刻。 フォーマット:yyyy-MM-dd HH:mm:ss | 2023-10-25 09:45:16 |
data[].user_api_unique_key | String | 一意の API キー (タスク送信時に使用されたモデル API の 5 つの要素)。フォーマット:
|
|
data[].task_status | String | タスクのステータス
| SUCCEEDED |
data[].task_id | String | タスク ID | a154c328-xxxx-xxxx-xxxx-e52a9a7e9a35 |
data[].region | String | タスクが実行されるリージョン | ap-southeast-1 |
data[].request_id | String | リクエスト ID | 108f38f5-xxxx-xxxx-xxxx-6504db9080b3 |
data[].api_key_id | String | API キー ID | 1234 |
data[].contain_result | Boolean | イベントに結果の詳細が含まれているかどうか。
| true |
data[].output_result | JSON | 結果の詳細。 |
|
aliyunoriginalaccountid | String | 元の Alibaba Cloud アカウント ID | 123456789098**** |
specversion | String | CloudEvents プロトコルのバージョン | 1.0 |
aliyuneventbusname | String | イベントを受信するイベントバスの名前 | default |
id | String | イベント ID—イベントを識別する一意の値。 | 45ef4dewdwe1-7c35-447a-bd93-fab**** |
source | String | イベントソース。 イベントを提供するサービスで、何が発生したかを識別します。通常、イベントソースのタイプ、発行メカニズム、または生成プロセスが含まれます。送信者は、各イベントの | acs.dashscope |
time | String | イベントが生成された時間。 正確なイベント時間が不明な場合、CloudEvents プロデューサーは time を別の値 (例:現在時刻) に設定することがありますが、同じソースのすべてのプロデューサーは一貫した値を使用する必要があります。 | 2020-11-19T21:04:41+08:00 |
aliyunregionid | String | イベントを受信するリージョン。 | ap-southeast-1 |
type | String | イベントタイプ。 ソースに関連するイベントのタイプを記述します。ルーティング、イベントクエリ、およびポリシーの適用に使用されます。フォーマットはプロデューサーによって定義され、バージョン情報が含まれます。 | dashscope:System:AsyncTaskFinish |
ステップ 3:イベント転送ルールの設定
ステップ 3:イベント転送ルールの設定
- 左側のナビゲーションウィンドウで、[イベントルール] を選択し、[ルールを作成] をクリックします。
- 基本情報の設定: カスタムルール名と説明を入力します。
-
イベントパターンの設定:転送するイベントを指定します。
-
イベントソース: イベントが Alibaba Cloud Model Studio から発生したことを示す
acs.dashscopeを検索して選択します。 -
イベントタイプ: 非同期タスクの完了イベントを示す
dashscope:System:AsyncTaskFinishを検索して選択します。 -
パターンの内容:特定のイベントに一致するようにフィルター条件を設定します。ステップ 2 で取得したイベント詳細のフィールドを使用します。パターン構文については、「イベントパターン」をご参照ください。例:
- デフォルト:イベントソースとタイプを選択すると、パターンはデフォルトで以下のように設定され、すべての
dashscope:System:AsyncTaskFinishイベントが転送されます。
- デフォルト:イベントソースとタイプを選択すると、パターンはデフォルトで以下のように設定され、すべての
-
イベントソース: イベントが Alibaba Cloud Model Studio から発生したことを示す
- フィールドによるフィルタリング:
user_api_unique_keyフィールドが:paraformer-8k-v2で終わるイベントのみを転送します。つまり、paraformer-8k-v2モデルのイベントのみです。イベントタイプはdashscope:System:AsyncTaskFinishです。
- イベントターゲットの設定: HTTP コールバック URL や RocketMQ メッセージキューなど、複数のイベントターゲットタイプをサポートしています。 詳細については、ステップ 4 をご参照ください。
ステップ 4:イベントターゲットを RocketMQ に設定
ステップ 4:イベントターゲットを RocketMQ に設定
ステップ 5:RocketMQ コンソールでのメッセージの表示
ステップ 5:RocketMQ コンソールでのメッセージの表示
- RocketMQ でオンラインでメッセージを表示するには、ワンクリック送受信体験機能を有効にします。
- この機能は Function Compute を使用します。無料試用クォータを超えた場合、最小限の料金が発生します。詳細は、「Function Compute の課金ルール」をご参照ください。
ステップ 6:SDK を使用したメッセージの受信と消費
ステップ 6:SDK を使用したメッセージの受信と消費
- Maven プロジェクトに、この依存関係を追加します:
- MQ メッセージを消費するためのサンプルコード:
よくある質問
1 つのイベントルールに複数のイベントターゲットを設定できますか?
はい。1 つのイベントルールに複数のイベントターゲットを設定できます。設定されている場合、同じイベントがすべてのターゲットに配信されます。
イベントルールを設定しましたが、イベントを受信できません。なぜですか?
イベント転送ルールのリージョンがイベントのリージョンと一致していることを確認してください。たとえば、シンガポールリージョンで設定されたルールは、シンガポールリージョンのイベントのみを転送し、他のリージョンのイベントは転送しません。コンソールページ上部のリージョンセレクターで EventBridge のリージョンを確認してください。
HTTP/HTTPS サービスリクエストがタイムアウトするか、エラーを返しますか?
以下の手順に従ってトラブルシューティングを行ってください:
- HTTP/HTTPS サービスのステータスを確認します。
- イベントターゲットで設定された URL を確認します。
-
イベントターゲットに設定されたネットワークタイプを確認します:
- PublicNetwork:パブリックネットワーク—URL がパブリックにアクセス可能であることを確認してください。
-
PrivateNetwork:VPC ネットワーク—選択した場合、VPC、vSwitch、および SecurityGroup の設定を確認してください。
- VPC と vSwitch の設定を確認します。
- ネットワークセキュリティグループの設定を確認します。
- その他のパラメーター設定については、「イベントターゲットのパラメーター」をご参照ください。

