

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

# 為您的任務提供應用程式
<a name="provide-applications"></a>

您可以使用佇列環境載入應用程式來處理任務。當您使用截止日期雲端主控台建立服務受管機群時，您可以選擇建立使用 conda 套件管理員載入應用程式的佇列環境。

如果您想要使用不同的套件管理員，您可以為該管理員建立佇列環境。如需使用 Rez 的範例，請參閱 [使用不同的套件管理員](#provide-applications-other-package)。

Deadline Cloud 提供 conda 頻道，可將所選的轉譯應用程式載入您的環境。它們支援 Deadline Cloud 為數位內容建立應用程式提供的提交者。

您也可以載入軟體，讓 conda-forge 用於您的任務。下列範例顯示使用 Deadline Cloud 提供的佇列環境在執行任務之前載入應用程式的任務範本。

**Topics**
+ [從 conda 頻道取得應用程式](#provide-applications-get-application)
+ [使用不同的套件管理員](#provide-applications-other-package)
+ [將 pip 用於僅限 Python 套件](#provide-applications-pip)

## 從 conda 頻道取得應用程式
<a name="provide-applications-get-application"></a>

您可以為安裝所選軟體的截止日期雲端工作者建立自訂佇列環境。此範例佇列環境的行為與主控台用於服務受管機群的環境相同。它會直接執行 conda 以建立環境。

環境會為每個在工作者上執行的截止日期雲端工作階段建立新的 conda 虛擬環境，然後在完成時刪除環境。

Conda 快取下載的套件，因此不需要再次下載，但每個工作階段都必須將所有套件連結至環境。

環境定義了三種指令碼，這些指令碼會在截止日期 Cloud 在工作者上啟動工作階段時執行。第一個指令碼會在呼叫`onEnter`動作時執行。它會呼叫其他兩個 來設定環境變數。當指令碼完成執行時，Conda 環境可用於所有指定的環境變數集。

如需範例的最新版本，請參閱 GitHub 上 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) 儲存庫中的 [conda\_queue\_env\_console\_equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml)。

如果您想要使用 Conda 頻道中無法使用的應用程式，您可以在 Amazon S3 中建立 Conda 頻道，然後為該應用程式建置自己的套件。如需進一步了解，請參閱[使用 S3 建立 conda 頻道](configure-jobs-s3-channel.md)。

### 從 conda-forge 取得開放原始碼程式庫
<a name="get-application-csv-example"></a>

本節說明如何從`conda-forge`頻道使用開放原始碼程式庫。下列範例是使用 `polars` Python 套件的任務範本。

任務會設定佇列環境中定義的 `CondaPackages`和 `CondaChannels` 參數，告知 Deadline Cloud 從何處取得套件。

設定參數的任務範本區段為：

```
- name: CondaPackages
  description: A list of conda packages to install. The job expects a Queue Environment to handle this.
  type: STRING
  default: polars
- name: CondaChannels
  description: A list of conda channels to get packages from. The job expects a Queue Environment to handle this.
  type: STRING
  default: conda-forge
```

如需完整範例任務範本的最新版本，請參閱 [stage\_1\_self\_contained\_template/template.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/job_dev_progression/stage_1_self_contained_template/template.yaml)如需載入 conda 套件的最新版本佇列環境，請參閱 GitHub 上 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) 儲存庫中的 [conda\_queue\_env\_console\_equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml)。

### Blender 從截止日期雲端管道取得
<a name="get-application-blender"></a>

下列範例顯示Blender從 `deadline-cloud` conda 頻道取得的任務範本。此頻道支援 Deadline Cloud 為數位內容建立軟體提供的提交者，但您可以使用相同的頻道來載入軟體供自己使用。

如需`deadline-cloud`頻道提供的軟體清單，請參閱*AWS 《截止日期雲端使用者指南*》中的[預設佇列環境](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment)。

此任務會設定佇列環境中定義的 `CondaPackages` 參數，以指示 Deadline Cloud Blender載入環境。

設定 參數的任務範本區段為：

```
- name: CondaPackages
  type: STRING
  userInterface:
    control: LINE_EDIT
    label: Conda Packages
    groupLabel: Software Environment
  default: blender
  description: >
    Tells the queue environment to install Blender from the deadline-cloud conda channel.
```

如需完整範例任務範本的最新版本，請參閱 [blender\_render/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/blender_render/template.yaml)。如需載入 conda 套件的最新版本佇列環境，請參閱 上 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) 儲存庫中的 [conda\_queue\_env\_console\_equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml)GitHub。

## 使用不同的套件管理員
<a name="provide-applications-other-package"></a>

截止日期雲端的預設套件管理員為 conda。如果您需要使用不同的套件管理員，例如 Rez，您可以建立自訂佇列環境，其中包含改用套件管理員的指令碼。

此範例佇列環境提供與主控台用於服務受管機群的環境相同的行為。它會以 取代 conda 套件管理員Rez。

環境定義了三種指令碼，這些指令碼會在截止日期 Cloud 在工作者上啟動工作階段時執行。第一個指令碼會在呼叫`onEnter`動作時執行。它會呼叫其他兩個 來設定環境變數。當指令碼完成執行時，Rez環境可使用所有指定的環境變數集。

此範例假設您有一個客戶受管機群，該機群使用 Rez 套件的共用檔案系統。

如需範例的最新版本，請參閱 上 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) 儲存庫中的 [rez\_queue\_env.yaml。](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/rez_queue_env.yaml) GitHub

## 將 pip 用於僅限 Python 套件
<a name="provide-applications-pip"></a>

如果您的任務需要的應用程式或程式庫是 PyPI 上可用的純 Python 套件，您可以使用 pip 和 Python 標準程式庫`venv`模組，而不是 conda 或 Rez。當套件未發佈至 conda 頻道，或您想要比 conda 建立更小的虛擬環境時，此方法運作良好。與 conda 和 不同Rez，pip 和 `venv` 包含在 Python 本身中，因此工作者主機只需要 上的`python3`解譯器`PATH`。截止日期 雲端服務受管機群提供一個。

當任務設定 `PipPackages` 參數時， 會在工作階段工作目錄中[截止日期雲端的 Pip 佇列環境](examples-queue-env-pip.md)建立 Python 虛擬環境，使用 pip 將請求的套件安裝到其中，並啟用它，以便任務的步驟與可用的套件一起執行。由於環境是在工作階段工作目錄中建立的，Deadline Cloud 會在工作階段結束時自動將其清除，而且您不需要自行編寫清除邏輯。如果任務未設定 `PipPackages`，佇列環境不會執行任何動作，因此您可以將其新增至也執行不使用該任務的佇列。

若要從私有索引安裝套件，例如 [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) 儲存庫而非公有 PyPI 索引，請設定佇列環境提供的 `PipIndexUrl`和 `PipExtraIndexUrls` 參數。

如果您不想設定佇列環境，您可以改為在任務套件中內嵌定義相同的 pip 環境。如需每種方法的範例，請參閱 上 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) 儲存庫中的 [pip\_package\_job](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/pip_package_job) 和 [pip\_self\_contained\_job](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/pip_self_contained_job) 任務套件GitHub。

對於生產佇列，請在`PipPackages`參數值中釘選套件版本，而不是每次安裝最新版本。版本鎖定可讓您重現的環境，並避免套件發佈新版本時發生非預期的中斷。如果任務取決於相符的提交者和轉接器版本，請將兩者固定到相同的版本。

如果您的客戶受管機群工作者為多個數位內容建立 (DCC) 應用程式執行任務，而且您使用 pip 安裝無效雲端轉接器，請將每個轉接器安裝到自己的虛擬環境中。在同一虛擬環境中將多個轉接器一起安裝可能會導致 pip 解析與其中一個轉接器衝突的版本共用相依性。

工作者主機需要 PyPI 或私有鏡像等套件來源的網路存取權，才能在工作階段開始時安裝套件。如果您的客戶受管機群工作者在沒有網際網路存取的情況下在私有子網路中執行，請使用 VPC 端點至您的套件來源、私有 pip 鏡像，或改為將套件安裝到您的工作者 AMI。

下表摘要說明每個套件管理員的權衡，以協助您選擇要使用的套件管理員。


| 套件管理工具 | 最適合 | 取捨 | 
| --- | --- | --- | 
| Conda （預設） | DCC 應用程式、複雜的原生相依性、跨平台套件 | 較大的環境；套件必須發佈至 conda 頻道 | 
| Rez | 具有現有Rez基礎設施的 Studio 管道 | Rez 需要在工作者主機上安裝 ，以及套件儲存庫的共用檔案系統 | 
| Pip | 僅限 Python 套件、PyPI 託管程式庫、輕量型安裝 | 僅限 Python 套件；沒有原生相依性解析 | 

選擇佇列環境之後，請將其連接至佇列。您可以從截止日期雲端主控台中佇列的**佇列環境**索引標籤新增 YAML 範本，或使用 [deadline：CreateQueueEnvironment](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateQueueEnvironment.html) 操作。如需主控台說明，請參閱*AWS 《截止日期雲端使用者指南*》中的[建立佇列環境](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html)。若要使用 CLI AWS 連接佇列環境：

```
aws deadline create-queue-environment \
    --farm-id {{FARM_ID}} \
    --queue-id {{QUEUE_ID}} \
    --priority 1 \
    --template-type YAML \
    --template file://{{queue-environment.yaml}}
```