Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure Batchのリソースファイルをより簡単にアップロードする

前回の記事で、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時につかったコンテナが格納されていると思います。

と長々書きましたが、以下のコードを読んだほうが早いと思います。

github.com

サンプルコード読むの大事ですね。