次の方法で共有


チュートリアル: Azure Functions を使用して Batch ジョブをトリガーする

このチュートリアルでは、 Azure Functions を使用して Batch ジョブをトリガーする方法について説明します。 この記事では、Azure Storage BLOB コンテナーに追加されたドキュメントを受け取り、Azure Batch を使用して光学式文字認識 (OCR) を適用する例について説明します。 OCR 処理を効率化するために、この例では、ファイルが BLOB コンテナーに追加されるたびに Batch OCR ジョブを実行する Azure 関数を構成します。 次の方法を学びます:

  • Azure portal を使用してプールとジョブを作成します。
  • BLOB コンテナーと Shared Access Signature (SAS) を作成します。
  • BLOB によってトリガーされる Azure 関数を作成します。
  • Storage に入力ファイルをアップロードします。
  • タスクの実行を監視する。
  • 出力ファイルを取得します。

[前提条件]

Azure にサインインする

Azure portal にサインインします。

Azure portal を使用して Batch プールと Batch ジョブを作成する

このセクションでは、Azure portal を使用して、OCR タスクを実行する Batch プールと Batch ジョブを作成します。

プールを作成する

  1. Azure 資格情報を使用して Azure portal にサインインします。

  2. 左側のナビゲーションで [ プール ] を選択し、検索フォームの上にある [ 追加 ] ボタンを選択してプールを作成します。

    [追加] ボタンが強調表示されている Batch アカウントの [プール] ページのスクリーンショット。

    1. プール ID を入力します。 次の使用例は、プール ocr-poolに名前を付けます。
    2. パブリッシャーとして カノニカル を選択 します
    3. オファーとして 0001-com-ubuntu-server-jammy を選択します。
    4. SKU として 22_04-lts を選択します。
    5. [Standard_F2s_v2 - 2 vCPUs, 2 GB Memory] セクションの VM サイズとしてを選択します。
    6. [スケール] セクションの [モード] を [固定] に設定し、[ターゲットの専用ノード] に「3」と入力します。
    7. [開始タスク] を [開始タスクを有効] に設定し、[コマンド ライン] にコマンド /bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf"を入力します。 [ 昇格レベル ] を プールの自動ユーザー (管理者) に設定してください。これにより、開始タスクに sudoコマンドを含めることができます。
    8. [OK] を選択.

ジョブの作成

  1. 左側のナビゲーションで [ ジョブ ] を選択してプールにジョブを作成し、検索フォームの上にある [追加] ボタンを選択します。
    1. ジョブ ID を入力します。 この例では、ocr-jobを使用します。
    2. [ocr-pool] にを選択するか、プールに対して選択した任意の名前を選択します。
    3. [OK] を選択.

BLOB コンテナーを作成する

ここでは、OCR Batch ジョブの入力ファイルと出力ファイルを格納する BLOB コンテナーを作成します。 この例では、入力コンテナーには input という名前が付けられ、OCR を使用しないすべてのドキュメントが最初にアップロードされて処理されます。 出力コンテナーは output という名前で、Batch ジョブが処理されたドキュメントを OCR で書き込む場所です。

  1. Azure portal で ストレージ アカウントを 検索して選択します。

  2. Batch アカウントにリンクされているストレージ アカウントを選択します。

  3. 左側のナビゲーションから [コンテナー] を選択し、「BLOB コンテナーの作成」の手順に従って、2 つの BLOB コンテナー (入力ファイル用に 1 つ、出力ファイル用に 1 つ) を作成します

  4. 出力コンテナーを選択して、出力コンテナーの共有アクセス署名を作成し、[共有アクセス トークン] ページの [アクセス許可] ドロップダウンで [書き込み] を選択します。 他のアクセス許可は必要ありません。

  5. [ SAS トークンと URL の生成] を選択し、後で関数に使用する BLOB SAS URL を コピーします。

    [アクセス許可] ドロップダウンと [SAS トークンと URL の生成] ボタンが強調表示されている [共有アクセス トークン] ページのスクリーンショット。

Azure Function の作成

このセクションでは、ファイルが入力コンテナーにアップロードされるたびに OCR Batch ジョブをトリガーする Azure 関数を作成します。

  1. 「Azure Blob Storage によってトリガーされる関数を作成する」の手順に従って、関数を作成します。

    1. ランタイム スタックの場合は、[.NET] を選択します。 この関数例では、C# を使用して Batch .NET SDK を利用します。
    2. [ ストレージ ] ページで、Batch アカウントにリンクしたのと同じストレージ アカウントを使用します。
    3. [確認および作成] > [作成]を選びます。

    次のスクリーンショットは、[基本] タブの [関数アプリの作成] ページで、例の情報を使用しています。

    サンプル情報を使用した [基本] タブの [関数アプリの作成] ページのスクリーンショット。

  2. 関数で、左側のナビゲーションから [関数 ] を選択し、[ 作成] を選択します。

  3. [ 関数の作成 ] ウィンドウで、Azure Blob Storage トリガーを選択します。

  4. 新しい関数に関数の名前を入力します。 この例では、名前は OcrTrigger です。 [Path] に「input/{name}」と入力します。ここには BLOB コンテナーの名前を入力します。

  5. を選択してを作成します。

    Azure Blob Storage トリガー オプションと [新しい関数とパス] フィールドが強調表示されている [関数の作成] ペインのスクリーンショット。

  6. BLOB によってトリガーされる関数が作成されたら、[ コード + テスト] を選択します。 関数で GitHub の run.csxfunction.proj を使用します。 function.proj は既定では存在しないため、[ アップロード ] ボタンを選択して開発ワークスペースにアップロードします。

    • run.csx は、新しい BLOB が入力 BLOB コンテナーに追加されたときに実行されます。
    • function.proj には、関数コード内の外部ライブラリ (Batch .NET SDK など) が一覧表示されます。
  7. batch とストレージの資格情報を反映するように、Run() ファイルのrun.csx関数の変数のプレースホルダー値を変更します。 Batch とストレージ アカウントの資格情報は、Azure portal の Batch アカウントとストレージ アカウントの [キー ] セクションで確認できます。

関数をトリガーして結果を取得する

GitHub の input_files ディレクトリから入力コンテナーに、スキャンされたファイルの一部またはすべてをアップロードします。

関数のコード + テスト ページで、Azure portal から関数をテストできます。

  1. [コード + テスト] ページで [テスト/実行] を選択します。
  2. [c1]入力[/c1]タブの[本文]に入力コンテナーのパスを入力します。
  3. [実行] を選択します。

数秒後、OCR が適用されたファイルが出力コンテナーに追加されます。 下部のウィンドウにログ情報が出力されます。 その後、ストレージ エクスプローラーでファイルが表示され、取得できます。

または、[ 監視 ] ページでログ情報を見つけることができます。

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

出力ファイルをローカル コンピューターにダウンロードするには、ストレージ アカウントの出力コンテナーに移動します。 必要なファイルのその他のオプションを選択し、[ ダウンロード] を選択します。

ヒント

ダウンロードしたファイルは、PDF リーダーで開くと検索できます。

リソースをクリーンアップする

ジョブがスケジュールされていない場合でも、ノードの実行中はプールに対して料金が発生します。 プールが不要になったら、次の手順で削除します。

  1. Batch アカウントの [ プール ] ページで、プールのその他のオプションを選択します。
  2. を選択して、を削除します。

プールを削除すると、ノード上のタスク出力はすべて削除されます。 ただし、出力ファイルはストレージ アカウントに残ります。 不要になったら、Batch アカウントとストレージ アカウントを削除することもできます。

次のステップ

.NET API を使用して Batch ワークロードをスケジュールおよび処理する例については、GitHub のサンプルを参照してください。