この Topic では、イベント通知に関するよくある質問とその回答を説明します。
一般的な質問
コールバックから HTTPS 再生 URL を取得する方法
ApsaraVideo VOD では、HTTP コールバックまたは Simple Message Queue (旧称:MNS) コールバックで HTTPS URL は返されません。コールバックから HTTPS 再生 URL を取得するには、以下の手順を実行します。
ドメイン名に SSL 証明書を設定します。
ドメイン名に SSL 証明書を設定済みの場合、この手順はスキップしてください。SSL 証明書の設定方法の詳細については、「HTTPS セキュアアクセラレーションの有効化」をご参照ください。
コールバックを受信するコードで、HTTP 再生 URL を HTTPS 再生 URL に置き換えます。
たとえば、Java では
replaceメソッドを使用できます。
複数のコールバック URL を指定する方法
ApsaraVideo VOD コンソールや SDK を使用するか、SetMessageCallback 操作を呼び出してコールバックを設定する場合、コールバック設定はグローバルに有効になり、利用できるコールバック URL は 1 つだけです。複数のコールバック URL を指定したい場合は、以下のいずれかの方法を使用します。
方法 1:
UserDataで Webhook アドレスを指定するメディアアセットのアップロードや ApsaraVideo Media Processing タスクの開始のために API を呼び出す際、たとえばオーディオ/ビデオのアップロード URL と認証情報を取得するやメディアトランスコーディングジョブを送信するなどの操作では、
UserDataリクエストパラメーターの MessageCallback フィールドを使用して、他のコールバックアドレスを指定できます。 詳細については、「複数のコールバックアドレスを設定する」をご参照ください。説明この方法は HTTP コールバックのみをサポートします。
HTTP コールバック設定を有効にするには、グローバルイベント通知を有効にし、関連イベントを設定する必要があります。
方法 2: アプリケーションごとにコールバック URL を指定する
マルチアプリケーション機能を使用すると、アプリケーションごとに独立したコールバック方法と Webhook アドレスを指定できます。詳細については、「マルチアプリケーションコンソールのガイド」をご参照ください。
HTTP コールバックに関するよくある質問
HTTP コールバックの受信失敗をトラブルシューティングする方法
ApsaraVideo VOD コンソールにログインします。左側のナビゲーションウィンドウで、設定の管理 > ApsaraVideo Media Processing の設定 > コールバックの設定 を選択します。コールバック機能が有効になっており、必要なコールバックをサブスクライブしていることを確認します。
以下の例を実行して、有効な応答が返されるかどうかを確認します。返されない場合は、コールバックを受信するサービスに問題がないか確認してください。
http://example.aliyundoc.com/processMessageを、設定した HTTP Webhook アドレスに置き換えてください。curl -l -i -H "Content-type: application/json" -X POST -d '{"VideoId":"videoId","EventType":"FileUploadComplete","Status":"success","Size":1439213}' http://example.aliyundoc.com/processMessage
HTTP コールバックリクエストのタイムアウト期間、失敗時の再送信回数、再試行間隔について
デフォルトでは、HTTP コールバックリクエストは 5 秒以内に応答がない場合、タイムアウトになります。失敗した場合、ApsaraVideo VOD は 1 秒間隔で最大 3 回コールバックリクエストを再送信します。
リトライ上限に達した HTTP コールバックリクエストは破棄されるか、またメッセージ損失を防ぐ方法
受信サービスでクラッシュ、再起動、ネットワークの利用不能などの問題が発生した場合、リトライ上限を超えるとメッセージは破棄されます。メッセージ損失を防ぐには、MNS コールバックの使用を推奨します。
HTTP コールバックは HTTP ステータスコード 302 をサポートしているか
HTTP コールバック方式は、HTTP ステータスコード 200 のみをサポートします。セキュリティ上の理由から、301 や 302 などの他の HTTP ステータスコードはサポートされていません。
サーバーが HTTP コールバックリクエストを複数回受信する理由
HTTP コールバックは、HTTP ステータスコード 200 が返された場合にのみ成功と見なされます。200 以外の HTTP ステータスコードが返された場合や、コールバックがタイムアウトした場合、コールバックは失敗し、ApsaraVideo VOD は最大 3 回までコールバックリクエストの再送信を試みます。
HTTP 認証とは
HTTP 認証では、ApsaraVideo VOD が HTTP コールバックリクエストに特定の署名ヘッダーを追加できるようにします。コールバックメッセージを受信するサーバーは、ApsaraVideo VOD 以外のリクエスタからの不正なリクエストを防ぐために署名を検証します。HTTP 認証を有効にするかどうかは、お客様が決定できます。
SMQ コールバックに関するよくある質問
Simple Message Queue (旧称:MNS) のコールバックキューにメッセージがない理由
ビデオオンデマンドサービスに Simple Message Queue (formerly MNS) へのアクセス権限がない場合、エンドポイントがパブリックネットワークエンドポイントでない場合、またはキュー名が正しくない場合、メッセージの配信は失敗します。
コールバックメッセージの存続時間 (TTL) が短すぎると、メッセージが消費される前にリリースされる可能性があります。TTL は 3,600 秒に設定することを推奨します。
最大メッセージ長が推奨デフォルト値の 65,536 バイト未満に設定されている場合、メッセージ配信が失敗することがあります。
メッセージを複数回受信する理由
メッセージは消費された後、短時間非表示になります。手動または API 操作を呼び出してメッセージを削除する必要があります。そうしないと、その期間が過ぎた後にメッセージが再度消費される可能性があります。
SMQ コールバック方式は認証をサポートしているか
ビデオオンデマンドサービスは、ユーザーキューへの書き込みに権限付与が必要であり、他の操作権限を持たないため、非常に安全です。したがって、通常、認証は必要ありません。
SMQ コールバック方式が利用可能なリージョン
ビデオが中国 (北京) や中国 (上海) などの中国本土リージョンに保存されている場合、中国 (上海) リージョン外のキューにメッセージを配信する際に、わずかな遅延が発生する可能性があります。中国 (上海) リージョンのキューを使用することを推奨します。
ビデオがシンガポールリージョンに保存されている場合は、シンガポールリージョンのメッセージキューを使用してください。
ビデオがフランクフルトリージョンに保存されている場合は、フランクフルトリージョンのメッセージキューを使用してください。
リージョンをまたいで SMQ キューをコールバックに使用できるか
はい。たとえば、中国 (上海) または中国 (北京) リージョンでビデオを保存・処理し、コールバックメッセージを中国 (深セン) リージョンの Simple Message Queue (formerly MNS) キューにプッシュできます。ただし、ネットワーク遅延によりメッセージの配信が遅れる可能性があります。そのため、ビデオが保存されているリージョン内の SMQ キューにメッセージをプッシュすることを推奨します。