メディア・ワークフロー・ジョブ・スポーナ・ファンクション

ビデオ・コンテンツがオブジェクト・ストレージ・バケットにアップロードされたときに、OCI Functionsのメディア・ワークフロー・ジョブ・スポーナ事前組込み関数を使用してメディア・ワークフロー・ジョブをトリガーする方法をご紹介します。

一般的な使用方法のシナリオ

メディア・ワークフロー・ジョブ・スポーナ機能の一般的な使用方法は次のとおりです。

  • ビデオ・ファイルをバケットにアップロードした後、ビデオ・ファイルを異なる解像度でエンコードします。
  • オーディオ・ファイルをバケットにアップロードした後、異なるビット・レートでオーディオ・ファイルをエンコードします。

メディア・ワークフロー・ジョブ・スポーナ機能に関連するサービスは次のとおりです。

有効範囲

この関数のスコープに関する考慮事項は次のとおりです。

  • 事前作成関数は、イベント・タイプ「Object–Create」のみを使用します。事前作成関数は、ソース・バケットに新しいオブジェクトが作成された場合のみ、メディア・ワークフロー・ジョブのトリガーに進みます。
  • 事前作成機能は、メディア・ワークフロー・ジョブが完了するまで待機しません。この関数は単にジョブをトリガーします。

前提条件と推奨事項

この事前作成機能を使用する場合のベスト・プラクティスを次に示します。

  • 事前構築済み関数のタイムアウトを300秒に設定します。
  • アプリケーションにリンクされたVCNは、サービス・ゲートウェイ、インターネット・ゲートウェイまたはNATゲートウェイを使用して他のOCIサービスへのアクセスを容易にします。

メディア・ワークフロー・ジョブ・スポーナ・ファンクションの構成

メディア・ワークフロー・ジョブ・スポーナ機能を構成するには、次のステップを実行します。

  1. 「事前構築済ファンクション」ページで、「メディア・ワークフロー・ジョブ・スポーナ」「ファンクションの作成」の順に選択します。
  2. 次のようにして、「名前」「コンパートメント」および「アプリケーション」を構成します:
    • 名前:新しいファンクションの名前。名前は、文字またはアンダースコアで始まり、文字、数字、ハイフンまたはアンダースコアが続く必要があります。長さは1から255文字です。機密情報の入力は避けてください。

      別のコンパートメントにファンクションを作成するには、「コンパートメントの変更」を選択します。

    • アプリケーション:関数を作成するアプリケーションを選択します。

      適切なアプリケーションが現在のコンパートメントにまだ存在しない場合は、「新規アプリケーションの作成」を選択し、次の詳細を指定します:

      • 名前:新しいアプリケーションの名前。機密情報の入力は避けてください。
      • VCN:アプリケーションでファンクションを実行するVCN (仮想クラウド・ネットワーク)。オプションで、「コンパートメントの変更」を選択して、別のコンパートメントからVCNを選択します。
      • サブネット:ファンクションを実行するサブネット(最大3つ)。オプションで、「コンパートメントの変更」を選択して、別のコンパートメントからサブネットを選択します。
      • シェイプ:アプリケーションでファンクションをデプロイおよび実行するコンピュート・インスタンスのプロセッサ・アーキテクチャ。アプリケーション内のすべてのファンクションは、同じアーキテクチャのコンピュート・インスタンスにデプロイされ、実行されます。ファンクションのイメージには、選択するアーキテクチャに必要な依存関係が含まれている必要があります。
      • タグ付けオプション: リソースの作成権限がある場合は、フリーフォーム・タグをそのリソースに適用する権限もあります。定義済タグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグ付けの詳細は、リソース・タグを参照してください。タグを適用するかどうかがわからない場合は、このオプションをスキップするか、管理者に問い合せてください。タグは後で適用できます。
  3. 事前構築済ファンクションのIAMポリシーを構成します。

    デフォルトでは、OCI Functionsは、事前構築済ファンクションの実行に必要なポリシー・ステートメントを使用して、動的グループおよびIAMポリシーを作成します。変更を行わずに、デフォルトの動作を受け入れます。

    OCI Functionsで動的グループとポリシーを自動的に作成しない場合は、「動的グループとIAMポリシーを作成しないでください」を選択します。

    重要

    「動的グループとIAMポリシーを作成しない」オプションを選択した場合は、動的グループとIAMポリシーを自分で定義する必要があります。詳細は、権限を参照してください。
  4. 関数メモリーおよびタイムアウト値を次のように構成します。
    • メモリー:関数の実行時に使用できるメモリーの最大数(メガバイト)。これは、ファンクション・イメージで使用可能なメモリーです。(デフォルト: 128 MB)
    • タイムアウト:ファンクションを実行できる最大時間(秒)。指定した時間に関数が完了しなかった場合、システムは関数を取り消します。(デフォルト: 300)
  5. (オプション)プロビジョニングされた同時実行性を構成して、実行インフラストラクチャを常に使用可能にする同時ファンクション呼出しの最小数を指定することで、ファンクションの起動時の初期遅延を最小限に抑えます。(デフォルト: 未選択)

    選択した場合、このファンクションに割り当てられるプロビジョニングされた同時実行ユニットの数を指定します。デフォルト: 20

    プロビジョニングされた同時実行性の詳細は、プロビジョニングされた同時実行性を使用した初期レイテンシの削減を参照してください。

  6. Configuration Parametersの説明に従って、関数構成パラメータを設定します。
  7. オプションで、「タグ付けオプション」セクションに任意のタグを入力します。リソースの作成権限がある場合は、フリーフォーム・タグをそのリソースに適用する権限もあります。定義済タグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグ付けの詳細は、リソース・タグを参照してください。タグを適用するかどうかがわからない場合は、このオプションをスキップするか、管理者に問い合せてください。タグは後で適用できます。
  8. 「作成」を選択します。

デプロイ・ダイアログに、ファンクションをデプロイするタスクが表示されます(「事前構築済ファンクション・デプロイメントの終了」を参照)。

構成オプション

構成パラメータ

名前 説明 必須
MEDIA_WORKFLOW_ID ジョブに対して作成されたメディア・ワークフローのID。デフォルトはnullです。 はい
DESTINATION_BUCKET ジョブの出力を保存するオブジェクト・ストレージ・バケットの名前。デフォルトは、ここで指定したバケットです。 いいえ
DESTINATION_COMPARTMENT_ID 宛先バケットが存在するコンパートメントのID。デフォルトは、メディア・ワークフローが作成されるコンパートメントです。 いいえ
PBF_LOG_LEVEL ロギング・レベル、オプションはDEBUGINFOWARNおよび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つの条件を作成します。

  1. 「イベント・タイプ」、サービス名を「オブジェクト・ストレージ」、イベント・タイプを「オブジェクト – 作成」とする条件。
  2. 「属性」、属性名を「bucketName」とし、ソース・バケットの名前を「属性値」に指定します。

事前作成関数の起動は、次のステップに従います。

  1. オブジェクト・ストアにビデオ・ファイルを配置すると、イベントがトリガーされます。
  2. ルールはイベントに一致し、事前作成関数を呼び出します。
  3. 事前構築済ファンクションは、ビデオ・ファイルを変換して宛先バケットにファイルを配置するジョブを送信します。

レスポンス本文

  • タイムスタンプ:タイムゾーンの問題を回避するために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プロジェクトのCLIコマンドの実行による404エラーの戻りを参照)。
444 タイム・アウト

ファンクションの実行中にクライアントとOCIファンクション間の接続が中断されました(ファンクションを呼び出すと、クライアントがタイムアウトをレポートし、ファンクションのログに444エラーが表示されますを参照)。再試行すると問題が解決する可能性があります。

ほとんどのクライアントの内部タイムアウトは60秒です。組み込み関数のタイムアウトが300秒に設定されている場合でも、次のことが必要な場合があります。

  • OCI CLIを使用する場合: --read-timeout 300を使用します
  • OCI SDKを使用する場合: クライアントの作成時に読取りタイムアウトを300に設定します
  • DBMS_CLOUD.SEND_REQUESTを使用する場合: UTL_HTTP.set_transfer_timeout(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"