メディア・ワークフロー・ジョブ・スポーナ・ファンクション
ビデオ・コンテンツがオブジェクト・ストレージ・バケットにアップロードされたときに、OCI Functionsのメディア・ワークフロー・ジョブ・スポーナ事前組込み関数を使用してメディア・ワークフロー・ジョブをトリガーする方法をご紹介します。
一般的な使用方法のシナリオ
メディア・ワークフロー・ジョブ・スポーナ機能の一般的な使用方法は次のとおりです。
- ビデオ・ファイルをバケットにアップロードした後、ビデオ・ファイルを異なる解像度でエンコードします。
- オーディオ・ファイルをバケットにアップロードした後、異なるビット・レートでオーディオ・ファイルをエンコードします。
メディア・ワークフロー・ジョブ・スポーナ機能に関連するサービスは次のとおりです。
有効範囲
この関数のスコープに関する考慮事項は次のとおりです。
- 事前作成関数は、イベント・タイプ「Object–Create」のみを使用します。事前作成関数は、ソース・バケットに新しいオブジェクトが作成された場合のみ、メディア・ワークフロー・ジョブのトリガーに進みます。
- 事前作成機能は、メディア・ワークフロー・ジョブが完了するまで待機しません。この関数は単にジョブをトリガーします。
前提条件と推奨事項
この事前作成機能を使用する場合のベスト・プラクティスを次に示します。
- 事前構築済み関数のタイムアウトを300秒に設定します。
- アプリケーションにリンクされたVCNが、サービス・ゲートウェイ、インターネット・ゲートウェイまたはNATゲートウェイを使用して、他のOCIサービスへのアクセスを容易にします。
メディア・ワークフロー・ジョブ・スポーナ・ファンクションの構成
メディア・ワークフロー・ジョブ・スポーナ機能を構成するには、次のステップを実行します。
デプロイ・ダイアログに、ファンクションをデプロイするタスクが表示されます(事前作成済ファンクションのデプロイメントの終了を参照)。
構成オプション
構成パラメータ
| 名前 | 説明 | 必須 |
|---|---|---|
MEDIA_WORKFLOW_ID
|
ジョブに対して作成されたメディア・ワークフローのID。デフォルトはnullです。 |
はい |
DESTINATION_BUCKET
|
ジョブの出力を保存するオブジェクト・ストレージ・バケットの名前。デフォルトは、ここで指定したバケットです。 | いいえ |
DESTINATION_COMPARTMENT_ID
|
宛先バケットが存在するコンパートメントのID。デフォルトは、メディア・ワークフローが作成されるコンパートメントです。 | いいえ |
PBF_LOG_LEVEL
|
ロギング・レベル、オプションはDEBUG、INFO、WARNおよびERRORです。デフォルトはINFOです。 |
いいえ |
権限
ファンクションを実行するには、特定のIAMポリシーが必要です。ファンクションの作成時に「動的グループおよびIAMポリシーを作成しない」オプションを選択した場合は、動的グループおよびIAMポリシーを自分で定義する必要があります。
適切なポリシーを設定するには、次のステップを実行します。
- ルールを使用して動的グループを作成します:
ALL {resource.id = '<function_ocid>', resource.compartment.id = '<compartment_ocid>' - 動的グループを使用してIAMポリシーを構成します:
Allow dynamic-group <dynamic-group-name> to use media-workflow in compartment <dynamic-group-name> Allow dynamic-group <dynamic-group-name> to manage media-workflow-job in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage object-family in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage media-asset in compartment <compartment-name> Allow dynamic-group <dynamic-group-name> to manage functions-family in compartment <compartment-name>
<function-ocid>を、前のステップで作成したファンクションのOCIDに置き換えます。 <dynamic-group-name>を、ファンクションのOCIDを使用して作成した動的グループの名前に置き換えます。<compartment_ocid>を、ファンクションを含むコンパートメントのOCIDに置き換えます。この関数の起動
イベント・ルールに次の2つの条件を作成します。
- 「イベント・タイプ」、サービス名を「オブジェクト・ストレージ」、イベント・タイプを「オブジェクト – 作成」とする条件。
- 「属性」、属性名を「bucketName」とし、ソース・バケットの名前を「属性値」に指定します。
事前作成関数の起動は、次のステップに従います。
- オブジェクト・ストアにビデオ・ファイルを配置すると、イベントがトリガーされます。
- ルールはイベントに一致し、事前作成関数を呼び出します。
- 事前構築済ファンクションは、ビデオ・ファイルを変換して宛先バケットにファイルを配置するジョブを送信します。
レスポンス本文
- タイムスタンプ:タイムゾーンの問題を回避するためにUTCを使用します。
- コード:タスクが正常に完了すると、この関数は200コードを返します。
- ステータス:タスクが正常に完了すると、この関数はステータスとして「成功」を返します。
- データ:タスクの特定のレスポンス情報を含むJSONメッセージ本文。
例
次の例は、JSON戻りデータを示しています。
{
"startTime": "2023-02-22T05:03:13.029Z",
"endTime": "2023-02-22T05:03:24.436Z",
"runTime": "PT11.407S",
"code": 200,
"status": "Success",
"data": {
"additionalInformation": {
"MediaWorkFlowJobId": "ocid1.mediaworkflowjob.oc1.us-ashburn-1.amaaaa...."
}
}
}
問題解決
OCI Functions共通ステータス・コード
次の表に、事前構築済ファンクションの操作時に発生する可能性がある一般的なOCIファンクション・エラーの概要を示します。
| エラー・コード | Error Message | アクション |
|---|---|---|
| 200 | 完了 | なし |
| 404 | NotAuthorizedOrNotFound | 必要なポリシーが構成されていることを確認します(Fn ProjectのCLIコマンドを実行すると、404エラーが返されますを参照)。 |
| 444 | タイム・アウト |
ファンクションの実行中に、クライアントとOCIファンクション間の接続が中断されました(ファンクションの起動によりクライアントがタイムアウトを報告し、ファンクションのログに444エラーが表示されますを参照)。再試行によって問題が解決する可能性があります。 ほとんどのクライアントの内部タイムアウトは60秒です。組み込み関数のタイムアウトが300秒に設定されている場合でも、次のことが必要な場合があります。
詳細は、ファンクションの呼出しを参照してください。 |
| 502, 504 | (各種) | ほとんどの問題は、502ステータス・コードを返します(ファンクションの呼出しは、ファンクションの失敗メッセージおよび502エラーを返すを参照)。「error receiving function response」というメッセージの502エラーは、メモリー割当てを増やすことによって解決される可能性があります。502は、関数が一時的な状態にあるときに発生することがあります。再試行によって問題が解決する可能性があります。 |
原因をさらに特定するには、事前作成済関数のロギング機能を有効にします(ファンクション・ログの格納および表示を参照)。ファンクションのトラブルシューティングの詳細は、OCIファンクションのトラブルシューティングを参照してください。
メディア・ワークフロー・ジョブ・スポーナ事前作成機能ステータス・コード
次の表に、この事前作成機能の使用時に発生する可能性のあるエラーの概要を示します。
| エラー・コード | Error Message | アクション |
|---|---|---|
| 400 | 関数ペイロードに不正なイベント・タイプがあります | イベント・タイプが「Object - Create」であることを確認します。 |
原因をさらに特定するには、事前作成済関数のロギング機能を有効にします(ファンクション・ログの格納および表示を参照)。
ログ分析のヒント
すべての組み込み関数は、ロギングレベルを構成パラメータとして指定するオプションを提供します。ロギング・レベルをDEBUGに設定して、詳細情報を取得できます。
アプリケーションには複数の関数があるため、事前に作成された関数ログエントリは接頭辞「PBF | <PBF NAME>」で識別されます。
たとえば、メディア・ワークフロー・ジョブ・スポーナ事前作成機能のログ・エントリは、次のようになります。
"PBF | Media Workflow Job Spawner | INFO | 2023-02-07T18:06:50.809Z | Fetching details from Events JSON"