前回の記事で、UploadFileToContainer
を使って手動でBLOBにリソースファイルをアップロードしていましたが、SDKにそういう機能をもったAPIが定義されていました。
関連するのは以下のクラス
- IFileStagingProvider
- FileToStage
- StagingStorageAccount
です。FileToStageが、IFileStagingProviderを実装した具象クラスで、StagingStorageAccountは、ストレージアカウント情報を保持するクラス。
MSDN的には以下をたどればよいでしょう。
FileToStage Class (Microsoft.Azure.Batch.FileStaging) | Microsoft Docs
具体的なコードとしては、
var filesToStage = new List<IFileStagingProvider>(); ... fileToStage.Add(ファイルのフルパス); .. task.FilesToStage = fileToStage;
とすれば、勝手に指定したストレージアカウントに任意のコンテナ作成して、Uploadしてくれます。めっちゃ便利ですね。
またこのままだと、不要なリソースファイルが蓄積されてしまいますので、削除したくなると思います。そういうときは、
var artifacts = batchClient.JobOperations.AddTask(jobId, task);
Taskを投入するときに、IFileStagingArtifact が格納されたDictionaryが返ってきますので、中身を除くとUpload時につかったコンテナが格納されていると思います。
と長々書きましたが、以下のコードを読んだほうが早いと思います。
サンプルコード読むの大事ですね。