LoginSignup
2
0

More than 1 year has passed since last update.

Pre-Built Functionsを利用して、OCI Media Flowのメディアワークフロージョブを自動実行してみた

Last updated at Posted at 2023-03-30

はじめに

この記事では、先日リリースされたPre-Built Functions(事前構築済ファンクション)を利用して、OCI Media Flowで開発したメディアワークフローを自動実行できることを確認します

Pre-Built Functionsのリリース情報はこちら(↓)

今回実現すること

実現イメージは以下スライドの通りです。動画ファイルの登録〜動画のトランスコード処理の実行〜トランスコード済動画の出力のメディア処理プロセスを自動化です
image.png

今回は、4つのPre-Built FunctionsからMedia Workflow Job Spawnerを利用します
image.png

1. 事前準備

1.1 VCNの作成

Oracle Functionsが利用するVCN(仮想クラウドネットワーク)を作成します。以下のチュートリアルを参考に作成します

image.png

1.2 メディアワークフローの作成

OCI Media Flowを利用して、動画のトランスコード処理をジョブとして実行するメディアワークフローを作成します。以下のQiita記事を参考に作成します

作成したメディアワークフローのOCID(Workflow ID)とCompartment IDを記録します。メディアワークフローを開き、Media Workflow information内のOCID(Workflow ID)とCompartment IDコピーし、メモ帳などのテキストエディタに記録します

image.png

また、メディアワークフロー作成時に入力先(Input)と出力先(Output)として指定したバケット名も記録します

  • 入力先バケット(Input)
    image.png
  • 出力先バケット(Output)
    image.png

2. ファンクションの作成

Pre-Built FunctionsのMedia Workflow Job Spawnerを利用して、ファンクションを作成します

  1. 左上のメニュー→開発者サービス→ファンクション→事前構築済ファンクションを開きます
    image.png

  2. Media Workflow Job Spawnerをクリックします
    image.png

  3. 関数の作成をクリックします
    image.png

  4. 名前を入力し、アプリケーションを選択します。アプリケーションを新規作成する場合は、新規アプリケーションの作成をクリックし、アプリケーションを作成します。
    また、「IAMポリシーの作成」はデフォルトのままで作成します(「動的グループとIAMポリシーを作成しないでください」は選択しません
    image.png

  5. 「メモリー」「タイムアウト」はデフォルトのままとします。「プロビジョニングされた並行性の有効化」は選択しません。
    「構成」のMEDIA_WORKFLOW_IDDESTINATION_BUCKETDESTINATION_COMPARTMENT_IDに、1.2項で記録した値をそれぞれ入力し、最後に作成をクリックします
    image.png

  6. ファンクションが作成されます。左下のリソース→構成をクリックします
    image.png

  7. MEDIA_WORKFLOW_IDDESTINATION_BUCKETDESTINATION_COMPARTMENT_IDに、ファンクション作成時に指定した値が設定されていることを確認します
    image.png

3. ルールの作成

入力先として指定したObject Storageのバケットに動画ファイルが登録(オブジェクトが作成)されたら、前の手順で作成したファンクションを起動する、というルールを作成します

  1. 左上のメニュー→監視および管理→イベント・サービス→ルールを開きます
    image.png

  2. ルールの作成をクリックします
    image.png

  3. 表示名を入力し、以下の条件でルール条件とアクションを入力し、ルールの作成をクリックします

    • ルール条件
      • 条件: イベント・タイプ
      • サービス名: Object Storage
      • イベント・タイプ: Object - Create
      • 別の条件
        • 条件: 属性
        • 属性名: bucketName
        • 属性値: (1.2項で記録した入力バケットの名前)
    • アクション
      • アクション・タイプ: ファンクション
      • ファンクション・コンパートメント: (ファンクションを作成したコンパートメント)
      • ファンクション・アプリケーション: (ファンクション作成時に指定したアプリケーション)
      • ファンクション: (Pre-Built Functionsで作成したファンクション)
        image.png
  4. ルールが作成されます。左下のリソース→イベントの一致やアクションを開き、先ほど作成したルールとアクションが指定されていることを確認します
    image.png

4. 確認

  1. 左上のメニュー→ストレージ→オブジェクト・ストレージとアーカイブ・ストレージから入力バケットを開き、オブジェクトのアップロードをクリックし、動画ファイルをアップロードします
    image.png

  2. しばらくするとメディアワークフロージョブが起動されます
    image.png

    【TIPS】
    実行されるジョブの表示名は PBF_<メディアワークフローの名前>_Job となります

  3. 実行されたジョブをクリックします。しばらく待つとジョブの実行が開始されます
    image.png

  4. ジョブが完了します。動画のトランスコードが完了します
    image.png

    【TIPS】
    ジョブ実行により生成されたトランスコード済動画ファイルは <出力先バケット名>/pbf/<Job output Prefix>/<動画ファイル名>/Transcode/ 配下に出力されます

  5. 作成したルールを開き、メトリックを確認します。ファンクションが実行されていることを確認します
    image.png

  6. 出力先バケットに生成されたトランスコード済動画のプレイリストをOCI Media StreamsのDistribution Channelにプレイリストアセットとして取り込みます
    image.png

  7. 取り込んだプレイリストアセットからプレビューURLを生成します。正しく動画再生できるか?を確認します
    image.png

動画の再生を確認するには、下記のサイトのようなhls.jsなどのJavaScriptライブラリを利用したHLSクライアントが必要です
https://hlsjs.video-dev.org/demo/

おわりに

以上でPre-Built Functionsを利用して、OCI Media Flowのメディアワークフロージョブの自動実行を「非常に素早く簡単に」確認できました。実際の開発現場でも使うことが多いシナリオと想定されるため、あらかじめ準備されている(Pre-Built)のは非常にありがたいですね。

最後に関連するドキュメントやリンクを記載します。参考にしていただければ幸いです

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0