JobPreparationTask interface
ジョブの準備を使用して、ジョブのタスクを実行するノードを準備できます。 ジョブの準備で一般的に実行されるアクティビティには、ジョブ内のすべてのタスクで使用される一般的なリソース ファイルのダウンロードが含まれます。 ジョブ準備タスクでは、これらの共通リソース ファイルをノード上の共有の場所にダウンロードできます。 (AZ_BATCH_NODE_ROOT_DIR\shared)、またはノードでローカル サービスを開始して、そのジョブのすべてのタスクがノードと通信できるようにします。 ジョブ準備タスクが失敗した場合 (つまり、終了コード 0 で終了する前に再試行回数を使い果たす)、Batch はノードでこのジョブのタスクを実行しません。 コンピューティング ノードは、再イメージ化されるまで、このジョブのタスクを実行できません。 コンピューティング ノードはアクティブなままであり、他のジョブに使用できます。 ジョブ準備タスクは、同じノードで複数回実行できます。 そのため、再実行を処理するジョブ準備タスクを記述する必要があります。 ノードが再起動された場合、再実行OnNodeRebootAfterSuccess が true の場合、またはジョブ準備タスクが以前に完了しなかった場合は、ジョブの他のタスクをスケジュールする前に、コンピューティング ノードでジョブ準備タスクが再度実行されます。 ノードが再イメージ化されると、ジョブのタスクをスケジュールする前に、ジョブ準備タスクが再度実行されます。 Batch は、ノードで復旧操作がトリガーされたときにタスクを再試行します。 復旧操作の例としては、異常なノードが再起動されたときや、ホスト障害が原因でコンピューティング ノードが消えた場合などです (ただし、これらに限定されません)。 回復操作による再試行は独立しており、maxTaskRetryCount に対してカウントされません。 maxTaskRetryCount が 0 の場合でも、復旧操作による内部再試行が発生する可能性があります。 このため、すべてのタスクはべき等である必要があります。 つまり、タスクは、破損やデータの重複を引き起こさずに中断および再起動されることを許容する必要があります。 実行時間の長いタスクのベスト プラクティスは、何らかの形式のチェックポイント処理を使用することです。
プロパティ
| command |
ジョブ準備タスクのコマンド ライン。 コマンド ラインはシェルでは実行されないため、環境変数の拡張などのシェル機能を利用することはできません。 このような機能を利用する場合は、コマンド ラインでシェルを呼び出す必要があります。たとえば、Windows では "cmd /c MyCommand" を使用し、Linux では "/bin/sh -c MyCommand" を使用します。 コマンド ラインがファイル パスを参照している場合は、相対パス (Task 作業ディレクトリに対する相対パス) を使用するか、Batch で指定された環境変数 (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables) を使用する必要があります。 |
| constraints | ジョブ準備タスクに適用される制約。 |
| container |
ジョブ準備タスクを実行するコンテナーの設定。 これを指定すると、AZ_BATCH_NODE_ROOT_DIRの下にあるすべてのディレクトリ (ノード上の Azure Batch ディレクトリのルート) がコンテナーに再帰的にマップされ、すべての Task 環境変数がコンテナーにマップされ、タスク コマンド ラインがコンテナーで実行されます。 AZ_BATCH_NODE_ROOT_DIR外のコンテナーで生成されたファイルはホスト ディスクに反映されない可能性があります。つまり、Batch ファイル API はそれらのファイルにアクセスできません。 |
| environment |
ジョブ準備タスクの環境変数設定の一覧。 |
| id | ジョブ内のジョブ準備タスクを一意に識別する文字列。 ID には、ハイフンやアンダースコアを含む英数字を任意に組み合わせて使用でき、64 文字を超えることはできません。 このプロパティを指定しない場合、Batch サービスは既定値の "jobpreparation" を割り当てます。 ジョブ内の他のタスクは、ジョブ準備タスクと同じ ID を持つ必要はありません。 同じ ID のタスクを送信しようとすると、Batch サービスはエラー コード TaskIdSameAsJobPreparationTask を含む要求を拒否します。REST API を直接呼び出す場合、HTTP 状態コードは 409 (競合) です。 |
| rerun |
コンピューティング ノードの再起動後に Batch サービスでジョブ準備タスクを再実行する必要があるかどうか。 コンピューティング ノードが再イメージ化された場合、またはジョブ準備タスクが完了しなかった場合 (タスクの実行中に再起動が発生したためなど) は、ジョブ準備タスクは常に再実行されます。 そのため、ジョブ準備タスクは常にべき等であり、複数回実行した場合は正しく動作するように記述する必要があります。 既定値は true です。 |
| resource |
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにダウンロードするファイルの一覧。 この要素の下に一覧表示されるファイルは、タスクの作業ディレクトリにあります。 リソース ファイルの一覧には最大サイズがあります。 最大サイズを超えると、要求は失敗し、応答エラー コードは RequestEntityTooLarge になります。 この場合、ResourceFiles のコレクションのサイズを小さくする必要があります。 これは、.zip ファイル、アプリケーション パッケージ、または Docker コンテナーを使用して実現できます。 |
| user |
ジョブ準備タスクを実行するユーザー ID。 省略した場合、タスクは、Windows コンピューティング ノード上のタスクに固有の非管理ユーザー、または Linux コンピューティング ノード上のプールに固有の非管理ユーザーとして実行されます。 |
| wait |
Batch サービスがジョブ準備タスクが正常に完了するまで待機してから、コンピューティング ノード上のジョブの他のタスクをスケジュールするかどうかを指定します。 ジョブ準備タスクが終了コード 0 で終了すると、正常に完了しました。 true で、ノードでジョブ準備タスクが失敗した場合、Batch サービスはジョブ準備タスクを最大再試行回数まで再試行します (制約要素で指定されています)。 すべての再試行の後もタスクが正常に完了していない場合、Batch サービスはジョブのタスクをノードにスケジュールしません。 ノードはアクティブなままで、他のジョブのタスクを実行する資格があります。 false の場合、Batch サービスはジョブ準備タスクの完了を待機しません。 この場合、ジョブ準備タスクがまだ実行中に、ジョブの他のタスクがコンピューティング ノードで実行を開始できます。ジョブ準備タスクが失敗した場合でも、新しいタスクは引き続きコンピューティング ノードでスケジュールされます。 既定値は true です。 |
プロパティの詳細
commandLine
ジョブ準備タスクのコマンド ライン。 コマンド ラインはシェルでは実行されないため、環境変数の拡張などのシェル機能を利用することはできません。 このような機能を利用する場合は、コマンド ラインでシェルを呼び出す必要があります。たとえば、Windows では "cmd /c MyCommand" を使用し、Linux では "/bin/sh -c MyCommand" を使用します。 コマンド ラインがファイル パスを参照している場合は、相対パス (Task 作業ディレクトリに対する相対パス) を使用するか、Batch で指定された環境変数 (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables) を使用する必要があります。
commandLine: string
プロパティ値
string
constraints
containerSettings
ジョブ準備タスクを実行するコンテナーの設定。 これを指定すると、AZ_BATCH_NODE_ROOT_DIRの下にあるすべてのディレクトリ (ノード上の Azure Batch ディレクトリのルート) がコンテナーに再帰的にマップされ、すべての Task 環境変数がコンテナーにマップされ、タスク コマンド ラインがコンテナーで実行されます。 AZ_BATCH_NODE_ROOT_DIR外のコンテナーで生成されたファイルはホスト ディスクに反映されない可能性があります。つまり、Batch ファイル API はそれらのファイルにアクセスできません。
containerSettings?: TaskContainerSettings
プロパティ値
environmentSettings
id
ジョブ内のジョブ準備タスクを一意に識別する文字列。 ID には、ハイフンやアンダースコアを含む英数字を任意に組み合わせて使用でき、64 文字を超えることはできません。 このプロパティを指定しない場合、Batch サービスは既定値の "jobpreparation" を割り当てます。 ジョブ内の他のタスクは、ジョブ準備タスクと同じ ID を持つ必要はありません。 同じ ID のタスクを送信しようとすると、Batch サービスはエラー コード TaskIdSameAsJobPreparationTask を含む要求を拒否します。REST API を直接呼び出す場合、HTTP 状態コードは 409 (競合) です。
id?: string
プロパティ値
string
rerunOnNodeRebootAfterSuccess
コンピューティング ノードの再起動後に Batch サービスでジョブ準備タスクを再実行する必要があるかどうか。 コンピューティング ノードが再イメージ化された場合、またはジョブ準備タスクが完了しなかった場合 (タスクの実行中に再起動が発生したためなど) は、ジョブ準備タスクは常に再実行されます。 そのため、ジョブ準備タスクは常にべき等であり、複数回実行した場合は正しく動作するように記述する必要があります。 既定値は true です。
rerunOnNodeRebootAfterSuccess?: boolean
プロパティ値
boolean
resourceFiles
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにダウンロードするファイルの一覧。 この要素の下に一覧表示されるファイルは、タスクの作業ディレクトリにあります。 リソース ファイルの一覧には最大サイズがあります。 最大サイズを超えると、要求は失敗し、応答エラー コードは RequestEntityTooLarge になります。 この場合、ResourceFiles のコレクションのサイズを小さくする必要があります。 これは、.zip ファイル、アプリケーション パッケージ、または Docker コンテナーを使用して実現できます。
resourceFiles?: ResourceFile[]
プロパティ値
userIdentity
ジョブ準備タスクを実行するユーザー ID。 省略した場合、タスクは、Windows コンピューティング ノード上のタスクに固有の非管理ユーザー、または Linux コンピューティング ノード上のプールに固有の非管理ユーザーとして実行されます。
userIdentity?: UserIdentity
プロパティ値
waitForSuccess
Batch サービスがジョブ準備タスクが正常に完了するまで待機してから、コンピューティング ノード上のジョブの他のタスクをスケジュールするかどうかを指定します。 ジョブ準備タスクが終了コード 0 で終了すると、正常に完了しました。 true で、ノードでジョブ準備タスクが失敗した場合、Batch サービスはジョブ準備タスクを最大再試行回数まで再試行します (制約要素で指定されています)。 すべての再試行の後もタスクが正常に完了していない場合、Batch サービスはジョブのタスクをノードにスケジュールしません。 ノードはアクティブなままで、他のジョブのタスクを実行する資格があります。 false の場合、Batch サービスはジョブ準備タスクの完了を待機しません。 この場合、ジョブ準備タスクがまだ実行中に、ジョブの他のタスクがコンピューティング ノードで実行を開始できます。ジョブ準備タスクが失敗した場合でも、新しいタスクは引き続きコンピューティング ノードでスケジュールされます。 既定値は true です。
waitForSuccess?: boolean
プロパティ値
boolean