

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 提交需要限制的作业
<a name="job-limit-job"></a>

您可以通过将其指定为任务或作业步骤的主机要求来应用限制。如果您未在步骤中指定限制，并且该步骤使用了关联资源，则在计划任务时，该步骤的使用量不会计入该限制中。

一些 Deadline Cloud 提交者允许您设置主机要求。您可以在提交者中指定限额的金额要求名称以应用限额。

如果你的提交者不支持添加主机要求，你也可以通过编辑作业的作业模板来应用限制。

**对任务包中的任务步骤应用限制**

1. 使用文本编辑器打开作业的作业模板。作业模板位于作业的作业包目录中。有关更多信息，请参阅《*截止日期云开发者指南*》[中的](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/build-job-bundle.html)任务捆绑包。

1. 查找要应用限制的步骤的步骤定义。

1. 将以下内容添加到步骤定义中。{{amount.name}}替换为限额的金额要求名称。对于典型用途，应将该`min`值设置为 1。

------
#### [ YAML ]

   ```
     hostRequirements:
       amounts:
       - name: amount.{{name}}
         min: 1
   ```

------
#### [ JSON ]

   ```
   "hostRequirements": {
       "amounts": [
           {
               "name": "{{amount.name}}",
               "min": "1"
           }
       ]
   }
   ```

------

   您可以按如下方式向任务步骤添加多个限制。将{{amount.name\_1}}和{{amount.name\_2}}替换为限额要求的金额名称。

------
#### [ YAML ]

   ```
     hostRequirements:
       amounts:
       - name: {{amount.name_1}}
         min: 1
       - name: {{amount.name_2}}
         min: 1
   ```

------
#### [ JSON ]

   ```
   "hostRequirements": {
       "amounts": [
           {
               "name": "amount.{{name_1}}",
               "min": "1"
           },
           {
               "name": "amount.{{name_2}}",
               "min": "1"
           }
       ]
   }
   ```

------

1. 保存对作业模板的更改。

## 使用提交挂钩自动设置限制
<a name="job-limit-hooks"></a>

如果您想在不要求艺术家手动编辑作业模板的情况下对所有提交的作业实施限制，则可以使用[提交前挂钩](https://github.com/aws-deadline/deadline-cloud/blob/mainline/docs/submission-hooks.md)在提交时自动将宿主要求注入到每个作业模板中。

提交前挂钩是在提交作业之前运行的脚本。该挂钩可以修改任务包`template.yaml`，为您的限`hostRequirements`额添加金额条目。这种方法可确保通过 Deadline Cloud CLI 或 DCC 提交者提交的每份作业都声明其对有限资源的需求。

有关完整的工作示例，请参阅 Deadline Cloud 示例存储库[中的](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/submission_hooks/license_limits)许可证限制提交挂钩示例。

## End-to-end 示例：强制执行 V-Ray 许可限制
<a name="job-limit-example"></a>

此示例说明如何为 5 个 V-Ray 浮动许可证设置限制，并验证调度程序是否强制执行了该限制。

**设置和测试 V-Ray 许可证限制**

1. 为您的农场设定限额：

   ```
   aws deadline create-limit \
       --farm-id {{farm-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}} \
       --display-name "VRay License" \
       --amount-requirement-name "amount.vray" \
       --max-count 5
   ```

1. 将限额与您的队列相关联：

   ```
   aws deadline create-queue-limit-association \
       --farm-id {{farm-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}} \
       --queue-id {{queue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}} \
       --limit-id {{limit-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}}
   ```

1. 将主持人要求添加到您的工作模板中：

   ```
   specificationVersion: jobtemplate-2023-09
   name: My VRay Render
   parameterDefinitions:
     - name: SceneFile
       type: PATH
       objectType: FILE
       dataFlow: IN
   steps:
     - name: Render
       hostRequirements:
         amounts:
           - name: amount.vray
             min: 1
       script:
         actions:
           onRun:
             command: vray
             args: ["-scene", "{{Param.SceneFile}}"]
   ```

1. 提交作业。调度器最多允许 5 个`amount.vray`任务在队列中的所有作业中并行运行。在插槽可用之前，其他任务将保持该`READY`状态。

要验证限制是否有效，请暂时设置`maxCount`为 1 并提交两个作业。第一个任务运行，第二个任务保持`READY`状态，直到第一个任务完成。