.NET クライアント ライブラリを使用して Batch ジョブを作成し、実行する
これで、Azure Batch サービスに接続できる .NET Core アプリが用意されました。また、3 つのノードでプールが作成されました。 このモジュールの残りの演習では、次の一覧にある残りの機能を実装します。
- 動画ファイルをアップロードし、Azure Batch サービスで利用できるようにする
- これらのノードで実行されるジョブを作成する
- 動画を変換するタスクをジョブに追加する
- アップロードした動画を変換するジョブを実行する
- 変換タスクの状態を監視する
- Batch サービス リソースをクリーンアップし、余計な利用料金を避ける (一日の処理が完了している場合、プールを削除するオプションを利用する)
バッチ管理
Batch クライアント API を利用し、次のメソッドを使ってアプリのコンポーネントを作成、削除、監視します。
- batchClient.PoolOperations.CreatePool: 前の演習でこれをアプリに追加しました
- batchClient.PoolOperations.DeletePoolAsync
- batchClient.JobOperations.CreateJob
- batchClient.JobOperations.AddTaskAsync
- batchClient.JobOperations.DeleteJobAsync
- batchClient.Utilities.CreateTaskStateMonitor
ファイルの管理
先ほどコンテナーの作成のために作成したストレージ アカウントを使用して、BLOB ストレージに入出力ファイルを格納します。 Azure Storage Blob クライアント ライブラリから、次のクラスとメソッドを使用します。
- CloudStorageAccount: 作成された Storage アカウントにアクセスします
- CloudStorageAccount.Parse(storageConnectionString): Storage アカウントに接続します
- storageAccount.CreateCloudBlobClient: CloudBlobClient を作成します
- CloudBlobClient: コンテナーを作成します
- blobClient.GetContainerReference(containerName): コンテナーの作成を可能にします
- CloudBlobContainer: BLOB ストレージを作成します
- container.GetBlockBlobReference(blobName): CloudBlockBlob が作成されます
- container.CreateIfNotExistsAsync: 存在しない場合、コンテナーが作成されます
- container.DeleteIfExistsAsync: 存在する場合、コンテナーが削除されます
- CloudBlockBlob: BLOB ストレージにファイルを追加または削除します
- blobData.UploadFromFileAsync(filePath): 指定されたローカル ファイルを Azure Storage にアップロードします
- blobData.GetSharedAccessSignature(sasConstraints): アップロードされた動画へのアクセスに使われる共有アクセス署名 URI を取得します
- ResourceFile.FromUrl(blobSasUri, blobName): Azure Storage の動画へのファイルパスを提供します
アプリで Azure Storage にファイルを転送できるようにするには、いくつかの手順を実行する必要があります。 また、コンソール アプリで Batch タスクがその出力を Blob Storage に書き込めるようにする必要があります。
Microsoft.Azure.Storage.Blob
NuGet パッケージを追加する- Azure Storage の資格情報を使用し、ストレージ アカウントに接続する
- Storage アカウントで BLOB を作成する
- BLOB クライアントを使用し、入力ファイルと出力ファイルのために 2 つのコンテナーを作成する
- 入力コンテナーを使ってローカル MP4 動画ファイルをアップロードし、Batch ジョブのためにファイルの一覧を保存する
- 動画が変換されたら、入力コンテナーを削除して、アップロードされたすべての動画を Azure から削除できる