

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

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

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

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

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

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

1. 使用文本编辑器打开作业模板。作业模板位于作业的作业捆绑包目录中。有关更多信息，请参阅 De *adline Cloud 开发者指南*中的 [Job 捆绑包](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\_2}}用限额的金额要求名称替换{{amount.name\_1}}和。

------
#### [ 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
   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`状态，直到第一个任务完成。