Deadline Cloud でジョブをスケジュールする - AWS 期限クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Deadline Cloud でジョブをスケジュールする

ジョブが作成されると、 AWS Deadline Cloud はキューに関連付けられた 1 つ以上のフリートで処理されるようにスケジュールします。特定のタスクを処理するフリートは、フリートに設定された機能と特定のステップのホスト要件に基づいて選択されます。

ジョブは、ベストエフォートの優先順位で、最も高い順にスケジュールされます。2 つのジョブの優先度が同じ場合、最も古いジョブが最初にスケジュールされます。

以下のセクションでは、ジョブをスケジュールするプロセスの詳細について説明します。

フリートの互換性を確認する

ジョブが作成されると、Deadline Cloud は、ジョブの各ステップのホスト要件を、ジョブが送信されたキューに関連付けられたフリートの機能と比較します。フリートがホスト要件を満たしている場合、ジョブは READY状態になります。

ジョブのいずれかのステップに、キューに関連付けられたフリートが満たすことができない要件がある場合、ステップのステータスは に設定されますNOT_COMPATIBLE。さらに、ジョブの残りのステップはキャンセルされます。

フリートの機能は、フリートレベルで設定されます。フリートのワーカーがジョブの要件を満たしても、フリートがジョブの要件を満たしていない場合、ジョブからタスクは割り当てられません。

次のジョブテンプレートには、ステップのホスト要件を指定するステップがあります。

name: Sample Job With Host Requirements specificationVersion: jobtemplate-2023-09 steps: - name: Step 1 script: actions: onRun: args: - '1' command: /usr/bin/sleep hostRequirements: amounts: # Capabilities starting with "amount." are amount capabilities. If they start with "amount.worker.", # they are defined by the OpenJD specification. Other names are free for custom usage. - name: amount.worker.vcpu min: 4 max: 8 attributes: - name: attr.worker.os.family anyOf: - linux

このジョブは、次の機能を持つフリートにスケジュールできます。

{ "vCpuCount": {"min": 4, "max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" }

このジョブは、次のいずれかの機能を持つフリートにスケジュールすることはできません。

{ "vCpuCount": {"min": 4}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" } The vCpuCount has no maximum, so it exceeds the maximum vCPU host requirement. { "vCpuCount": {"max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "linux", "cpuArchitectureType": "x86_64" } The vCpuCount has no minimum, so it doesn't satisfy the minimum vCPU host requirement. { "vCpuCount": {"min": 4, "max": 8}, "memoryMiB": {"min": 1024}, "osFamily": "windows", "cpuArchitectureType": "x86_64" } The osFamily doesn't match.

フリートスケーリング

ジョブが互換性のあるサービスマネージドフリートに割り当てられると、フリートは自動スケーリングされます。フリート内のワーカーの数は、フリートが実行できるタスクの数に基づいて変わります。

ジョブがカスタマーマネージドフリートに割り当てられると、ワーカーがすでに存在するか、イベントベースの自動スケーリングを使用して作成できます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「 を使用して EventBridge自動スケーリングイベントを処理する」を参照してください。

セッション

ジョブ内のタスクは 1 つ以上のセッションに分割されます。ワーカーはセッションを実行して環境をセットアップし、タスクを実行してから環境を分解します。各セッションは、ワーカーが実行する必要がある 1 つ以上のアクションで構成されます。

ワーカーがセクションアクションを完了すると、追加のセッションアクションをワーカーに送信できます。ワーカーは、セッション内の既存の環境とジョブアタッチメントを再利用して、タスクをより効率的に完了します。

ジョブアタッチメントは、Deadline Cloud CLIジョブバンドルの一部として使用する送信者によって作成されます。create-job AWS CLI コマンドの --attachmentsオプションを使用してジョブアタッチメントを作成することもできます。環境は、特定のキューにアタッチされたキュー環境と、ジョブテンプレートで定義されたジョブ環境とステップ環境の 2 つの場所で定義されます。

セッションアクションには 4 つのタイプがあります。

  • syncInputJobAttachments – 入力ジョブアタッチメントをワーカーにダウンロードします。

  • envEnter – 環境のonEnterアクションを実行します。

  • taskRun – タスクのonRunアクションを実行します。

  • envExit – 環境のonExitアクションを実行します。

次のジョブテンプレートにはステップ環境があります。ステップ環境を設定するonEnter定義、実行するタスクを定義するonRun定義、ステップ環境を分解するonExit定義があります。このジョブ用に作成されたセッションには、 envEnterアクション、1 つ以上の taskRun アクション、次に envExitアクションが含まれます。

name: Sample Job with Maya Environment specificationVersion: jobtemplate-2023-09 steps: - name: Maya Step stepEnvironments: - name: Maya description: Runs Maya in the background. script: embeddedFiles: - name: initData filename: init-data.yaml type: TEXT data: | scene_file: MyAwesomeSceneFile renderer: arnold camera: persp actions: onEnter: command: MayaAdaptor args: - daemon - start - --init-data - file://{{Env.File.initData}} onExit: command: MayaAdaptor args: - daemon - stop parameterSpace: taskParameterDefinitions: - name: Frame range: 1-5 type: INT script: embeddedFiles: - name: runData filename: run-data.yaml type: TEXT data: | frame: {{Task.Param.Frame}} actions: onRun: command: MayaAdaptor args: - daemon - run - --run-data - file://{{ Task.File.runData }}

ステップの依存関係

Deadline Cloud は、ステップ間の依存関係の定義をサポートしているため、あるステップは別のステップが完了するまで待機してから開始します。ステップには複数の依存関係を定義できます。依存関係を持つステップは、その依存関係がすべて完了するまでスケジュールされません。

ジョブテンプレートが循環依存関係を定義すると、ジョブは拒否され、ジョブステータスは に設定されますCREATE_FAILED

次のジョブテンプレートは、2 つのステップでジョブを作成します。 StepBは に依存しStepAます。 は正常にStepA完了した後にStepBのみ実行されます。

ジョブが作成されると、 StepAREADY状態になり、 StepBPENDING状態になります。StepA が完了すると、 は READY状態StepBに移行します。がStepA失敗した場合、または StepA がキャンセルされた場合、 は CANCELED状態StepBに移行します。

複数のステップへの依存関係を設定できます。例えば、 が StepAと の両方StepCに依存する場合StepBStepCは他の 2 つのステップが終了するまで開始されません。

name: Step-Step Dependency Test specificationVersion: 'jobtemplate-2023-09' steps: - name: A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task A Done! - name: B dependencies: - dependsOn: A # This means Step B depends on Step A script: actions: onRun: command: bash args: ['{{ Task.File.run }}'] embeddedFiles: - name: run type: TEXT data: | #!/bin/env bash set -euo pipefail sleep 1 echo Task B Done!