本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在截止日期雲端中排程任務
建立任務後, 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
取決於 StepA
。 StepB
只會在 StepA
成功完成之後執行。
建立任務後, StepA
處於 READY
狀態,且 StepB
處於 PENDING
狀態。StepA
完成後, StepB
會移至 READY
狀態。如果StepA
失敗,或StepA
如果 已取消, StepB
會移至 CANCELED
狀態。
您可以設定多個步驟的相依性。例如,如果 同時StepC
取決於 StepA
和 StepB
,則在其他兩個步驟完成之前, 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!