

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

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

您可以將限制指定為任務或任務步驟的主機需求，以套用限制。如果您未在步驟中指定限制，且該步驟使用相關聯的資源，則在排程任務時，該步驟的用量不會計入限制。

有些截止日期雲端提交者可讓您設定主機需求。您可以在提交者中指定限制的金額需求名稱，以套用限制。

如果您的提交者不支援新增主機需求，您也可以編輯任務的任務範本來套用限制。

**將限制套用至任務套件中的任務步驟**

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`金額項目。此方法可確保透過截止日期雲端 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` 狀態時執行，直到第一個任務完成。