在截止日期雲端中排程任務 - AWS 截止日期 雲端

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在截止日期雲端中排程任務

建立任務後, AWS 截止日期 雲端會將其排程在與佇列相關聯的一或多個機群上進行處理。根據為機群設定的功能和特定步驟的主機需求,選擇處理特定任務的機群。

佇列中的任務會以最盡力的優先順序排定,從最高到最低。當兩個任務具有相同的優先順序時,會先排程最舊的任務。

下列各節提供排程任務程序的詳細資訊。

判斷機群相容性

建立任務後,截止日期 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 來處理自動擴展事件Amazon EC2 Auto Scaling

工作階段

任務中的任務分為一或多個工作階段。工作者會執行工作階段來設定環境、執行任務,然後清除環境。每個工作階段都由工作者必須採取的一或多個動作組成。

當工作者完成區段動作時,可以將其他工作階段動作傳送給工作者。工作者會重複使用工作階段中的現有環境和任務附件,以更有效率地完成任務。

任務附件是由您做為截止日期雲端 CLI 任務套件一部分的提交者建立。您也可以使用 create-job AWS CLI 命令--attachments的選項來建立任務附件。環境定義有兩個位置:連接到特定佇列的佇列環境,以及任務範本中定義的任務和步驟環境。

有四種工作階段動作類型:

  • syncInputJobAttachments – 將輸入任務附件下載至工作者。

  • envEnter – 執行環境onEnter的動作。

  • taskRun – 執行任務onRun的動作。

  • envExit – 執行環境onExit的動作。

下列任務範本具有步驟環境。它具有設定步驟環境onEnter的定義、定義要執行之任務onRun的定義,以及淘汰步驟環境onExit的定義。為此任務建立的工作階段將包含 envEnter動作、一或多個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 }}

步驟相依性

期限 雲端支援在步驟之間定義相依性,讓一個步驟等待另一個步驟完成再開始。您可以為步驟定義多個相依性。在所有相依性完成之前,不會排程具有相依性的步驟。

如果任務範本定義循環相依性,則會拒絕任務,並將任務狀態設定為 CREATE_FAILED

下列任務範本會建立具有兩個步驟的任務。 StepB 取決於 StepAStepB只會在 StepA 成功完成之後執行。

建立任務後, StepA 處於 READY 狀態,且 StepB 處於 PENDING 狀態。StepA 完成後, StepB會移至 READY 狀態。如果StepA失敗,或StepA如果 已取消, StepB會移至 CANCELED 狀態。

您可以設定多個步驟的相依性。例如,如果 同時StepC取決於 StepAStepB,則在其他兩個步驟完成之前, StepC不會開始。

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!