JobManagerTask interface
ジョブ マネージャー タスクは、ジョブの作成時に自動的に開始されます。 Batch サービスは、ジョブ内の他のタスクの前にジョブ マネージャー タスクのスケジュールを設定しようとします。 プールを縮小すると、Batch サービスは、ジョブ マネージャー タスクが実行されているノードを可能な限り長く保持しようとします (つまり、"通常" タスクを実行しているコンピューティング ノードは、ジョブ マネージャー タスクを実行するコンピューティング ノードの前に削除されます)。 ジョブ マネージャー タスクが失敗し、再起動する必要がある場合、システムは優先度が最も高いタスクをスケジュールしようとします。 使用可能なアイドル状態のコンピューティング ノードがない場合、システムは、ジョブ マネージャー タスクを再起動するための空き時間を確保するために、プール内の実行中のタスクの 1 つを終了し、キューに戻すことができます。 あるジョブのジョブ マネージャー タスクは、他のジョブのタスクよりも優先されないことに注意してください。 ジョブ間では、ジョブ レベルの優先順位のみが確認されます。 たとえば、優先度 0 のジョブ マネージャーを再起動する必要がある場合、優先度 1 のジョブのタスクは置き換えされません。 Batch は、ノードで復旧操作がトリガーされたときにタスクを再試行します。 復旧操作の例としては、異常なノードが再起動されたときや、ホスト障害が原因でコンピューティング ノードが消えた場合などです (ただし、これらに限定されません)。 回復操作による再試行は独立しており、maxTaskRetryCount に対してカウントされません。 maxTaskRetryCount が 0 の場合でも、復旧操作による内部再試行が発生する可能性があります。 このため、すべてのタスクはべき等である必要があります。 つまり、タスクは、破損やデータの重複を引き起こさずに中断および再起動されることを許容する必要があります。 実行時間の長いタスクのベスト プラクティスは、何らかの形式のチェックポイント処理を使用することです。
プロパティ
| allow |
ジョブ マネージャー タスクが優先順位の低いコンピューティング ノードで実行できるかどうかを示します。 既定値は true です。 |
| application |
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにデプロイするアプリケーション パッケージの一覧。 アプリケーション パッケージは、タスク作業ディレクトリではなく、共有ディレクトリにダウンロードおよびデプロイされます。 そのため、参照先のアプリケーション パッケージが既にコンピューティング ノード上にあり、最新の状態である場合、再ダウンロードされません。コンピューティング ノード上の既存のコピーが使用されます。 参照先のアプリケーション パッケージをインストールできない場合 (たとえば、パッケージが削除されたか、ダウンロードに失敗したため)、タスクは失敗します。 |
| authentication |
Batch サービス操作の実行にタスクが使用できる認証トークンの設定。 このプロパティが設定されている場合、Batch サービスは、アカウント アクセス キーを必要とせずに Batch サービス操作を認証するために使用できる認証トークンを Task に提供します。 トークンは、AZ_BATCH_AUTHENTICATION_TOKEN環境変数を介して提供されます。 タスクがトークンを使用して実行できる操作は、設定によって異なります。 たとえば、タスクは、ジョブに他のタスクを追加したり、ジョブまたはジョブの下の他のタスクの状態を確認したりするために、ジョブのアクセス許可を要求できます。 |
| 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 |
ジョブ マネージャー タスクを実行するコンテナーの設定。 このタスクを実行するプールに containerConfiguration が設定されている場合は、これも設定する必要があります。 このタスクを実行するプールに containerConfiguration が設定されていない場合は、これを設定しないでください。 これを指定すると、AZ_BATCH_NODE_ROOT_DIRの下にあるすべてのディレクトリ (ノード上の Azure Batch ディレクトリのルート) がコンテナーに再帰的にマップされ、すべての Task 環境変数がコンテナーにマップされ、タスク コマンド ラインがコンテナーで実行されます。 AZ_BATCH_NODE_ROOT_DIR外のコンテナーで生成されたファイルはホスト ディスクに反映されない可能性があります。つまり、Batch ファイル API はそれらのファイルにアクセスできません。 |
| display |
ジョブ マネージャー タスクの表示名。 一意である必要はありません。最大長 1024 までの Unicode 文字を含めることができます。 |
| environment |
ジョブ マネージャー タスクの環境変数設定の一覧。 |
| id | ジョブ内のジョブ マネージャー タスクを一意に識別する文字列。 ID には、ハイフンやアンダースコアを含む英数字を任意に組み合わせて使用でき、64 文字を超えることはできません。 |
| kill |
ジョブ マネージャー タスクの完了がジョブ全体の完了を示すかどうか。 true の場合、ジョブ マネージャー タスクが完了すると、Batch サービスによってジョブが完了としてマークされます。 現在実行中のタスク (ジョブ リリース以外) がある場合、それらのタスクは終了します。 false の場合、ジョブ マネージャー タスクの完了はジョブの状態に影響しません。 この場合は、onAllTasksComplete 属性を使用してジョブを終了するか、クライアントまたはユーザーにジョブを明示的に終了させる必要があります。 この例は、ジョブ マネージャーが一連のタスクを作成した後、その実行でそれ以上の役割を果たさない場合です。 既定値は true です。 onAllTasksComplete 属性と onTaskFailure 属性を使用してジョブの有効期間を制御し、ジョブ マネージャー タスクを使用してジョブのタスクを作成する (進行状況を監視しない) 場合は、killJobOnCompletion を false に設定することが重要です。 |
| output |
コマンド ラインの実行後に Batch サービスがコンピューティング ノードからアップロードするファイルの一覧。 複数インスタンスのタスクの場合、ファイルはプライマリ タスクが実行されるコンピューティング ノードからのみアップロードされます。 |
| required |
タスクの実行に必要なスケジュール スロットの数。 既定値は 1 です。 タスクは、ノードに十分な空きスケジュール スロットがある場合にのみ、コンピューティング ノードで実行するようにスケジュールできます。 複数インスタンスのタスクの場合、これは 1 である必要があります。 |
| resource |
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにダウンロードするファイルの一覧。 この要素の下に一覧表示されるファイルは、タスクの作業ディレクトリにあります。 リソース ファイルの一覧には最大サイズがあります。 最大サイズを超えると、要求は失敗し、応答エラー コードは RequestEntityTooLarge になります。 この場合、ResourceFiles のコレクションのサイズを小さくする必要があります。 これは、.zip ファイル、アプリケーション パッケージ、または Docker コンテナーを使用して実現できます。 |
| run |
ジョブ マネージャー タスクが実行されるコンピューティング ノードを排他的に使用する必要があるかどうか。 true の場合、ジョブ マネージャーが実行されている限り、同じノードで他のタスクは実行されません。 false の場合、他のタスクはコンピューティング ノード上のジョブ マネージャーと同時に実行できます。 ジョブ マネージャー タスクは通常、コンピューティング ノードの同時実行タスク制限に対してカウントされるため、これは、コンピューティング ノードが複数の同時実行タスクを許可する場合にのみ関連します。 既定値は true です。 |
| user |
ジョブ マネージャー タスクを実行するユーザー ID。 省略した場合、タスクはタスクに固有の非管理ユーザーとして実行されます。 |
プロパティの詳細
allowLowPriorityNode
ジョブ マネージャー タスクが優先順位の低いコンピューティング ノードで実行できるかどうかを示します。 既定値は true です。
allowLowPriorityNode?: boolean
プロパティ値
boolean
applicationPackageReferences
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにデプロイするアプリケーション パッケージの一覧。 アプリケーション パッケージは、タスク作業ディレクトリではなく、共有ディレクトリにダウンロードおよびデプロイされます。 そのため、参照先のアプリケーション パッケージが既にコンピューティング ノード上にあり、最新の状態である場合、再ダウンロードされません。コンピューティング ノード上の既存のコピーが使用されます。 参照先のアプリケーション パッケージをインストールできない場合 (たとえば、パッケージが削除されたか、ダウンロードに失敗したため)、タスクは失敗します。
applicationPackageReferences?: ApplicationPackageReference[]
プロパティ値
authenticationTokenSettings
Batch サービス操作の実行にタスクが使用できる認証トークンの設定。 このプロパティが設定されている場合、Batch サービスは、アカウント アクセス キーを必要とせずに Batch サービス操作を認証するために使用できる認証トークンを Task に提供します。 トークンは、AZ_BATCH_AUTHENTICATION_TOKEN環境変数を介して提供されます。 タスクがトークンを使用して実行できる操作は、設定によって異なります。 たとえば、タスクは、ジョブに他のタスクを追加したり、ジョブまたはジョブの下の他のタスクの状態を確認したりするために、ジョブのアクセス許可を要求できます。
authenticationTokenSettings?: AuthenticationTokenSettings
プロパティ値
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
ジョブ マネージャー タスクを実行するコンテナーの設定。 このタスクを実行するプールに containerConfiguration が設定されている場合は、これも設定する必要があります。 このタスクを実行するプールに containerConfiguration が設定されていない場合は、これを設定しないでください。 これを指定すると、AZ_BATCH_NODE_ROOT_DIRの下にあるすべてのディレクトリ (ノード上の Azure Batch ディレクトリのルート) がコンテナーに再帰的にマップされ、すべての Task 環境変数がコンテナーにマップされ、タスク コマンド ラインがコンテナーで実行されます。 AZ_BATCH_NODE_ROOT_DIR外のコンテナーで生成されたファイルはホスト ディスクに反映されない可能性があります。つまり、Batch ファイル API はそれらのファイルにアクセスできません。
containerSettings?: TaskContainerSettings
プロパティ値
displayName
ジョブ マネージャー タスクの表示名。 一意である必要はありません。最大長 1024 までの Unicode 文字を含めることができます。
displayName?: string
プロパティ値
string
environmentSettings
id
ジョブ内のジョブ マネージャー タスクを一意に識別する文字列。 ID には、ハイフンやアンダースコアを含む英数字を任意に組み合わせて使用でき、64 文字を超えることはできません。
id: string
プロパティ値
string
killJobOnCompletion
ジョブ マネージャー タスクの完了がジョブ全体の完了を示すかどうか。 true の場合、ジョブ マネージャー タスクが完了すると、Batch サービスによってジョブが完了としてマークされます。 現在実行中のタスク (ジョブ リリース以外) がある場合、それらのタスクは終了します。 false の場合、ジョブ マネージャー タスクの完了はジョブの状態に影響しません。 この場合は、onAllTasksComplete 属性を使用してジョブを終了するか、クライアントまたはユーザーにジョブを明示的に終了させる必要があります。 この例は、ジョブ マネージャーが一連のタスクを作成した後、その実行でそれ以上の役割を果たさない場合です。 既定値は true です。 onAllTasksComplete 属性と onTaskFailure 属性を使用してジョブの有効期間を制御し、ジョブ マネージャー タスクを使用してジョブのタスクを作成する (進行状況を監視しない) 場合は、killJobOnCompletion を false に設定することが重要です。
killJobOnCompletion?: boolean
プロパティ値
boolean
outputFiles
コマンド ラインの実行後に Batch サービスがコンピューティング ノードからアップロードするファイルの一覧。 複数インスタンスのタスクの場合、ファイルはプライマリ タスクが実行されるコンピューティング ノードからのみアップロードされます。
outputFiles?: OutputFile[]
プロパティ値
requiredSlots
タスクの実行に必要なスケジュール スロットの数。 既定値は 1 です。 タスクは、ノードに十分な空きスケジュール スロットがある場合にのみ、コンピューティング ノードで実行するようにスケジュールできます。 複数インスタンスのタスクの場合、これは 1 である必要があります。
requiredSlots?: number
プロパティ値
number
resourceFiles
コマンド ラインを実行する前に Batch サービスがコンピューティング ノードにダウンロードするファイルの一覧。 この要素の下に一覧表示されるファイルは、タスクの作業ディレクトリにあります。 リソース ファイルの一覧には最大サイズがあります。 最大サイズを超えると、要求は失敗し、応答エラー コードは RequestEntityTooLarge になります。 この場合、ResourceFiles のコレクションのサイズを小さくする必要があります。 これは、.zip ファイル、アプリケーション パッケージ、または Docker コンテナーを使用して実現できます。
resourceFiles?: ResourceFile[]
プロパティ値
runExclusive
ジョブ マネージャー タスクが実行されるコンピューティング ノードを排他的に使用する必要があるかどうか。 true の場合、ジョブ マネージャーが実行されている限り、同じノードで他のタスクは実行されません。 false の場合、他のタスクはコンピューティング ノード上のジョブ マネージャーと同時に実行できます。 ジョブ マネージャー タスクは通常、コンピューティング ノードの同時実行タスク制限に対してカウントされるため、これは、コンピューティング ノードが複数の同時実行タスクを許可する場合にのみ関連します。 既定値は true です。
runExclusive?: boolean
プロパティ値
boolean
userIdentity
ジョブ マネージャー タスクを実行するユーザー ID。 省略した場合、タスクはタスクに固有の非管理ユーザーとして実行されます。
userIdentity?: UserIdentity