

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

# 使用 S3 创建 conda 频道
<a name="configure-jobs-s3-channel"></a>

如果你的作业需要运行[https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment)或[https://conda-forge.org/](https://conda-forge.org/)频道上没有的应用程序，你可以托管一个自定义 conda 频道来提供你自己的软件包。当你在 Deadline Cloud（De AWS adline Cloud）控制台中创建队列时，控制台默认会添加一个 conda 队列环境。要使您的包可用于作业，请将自定义频道添加到队列环境中。

conda 频道是静态托管的内容，您可以通过[多种方式](https://rattler-build.prefix.dev/latest/publish/)托管，包括在文件系统或亚马逊简单存储服务 (Amazon S3) 存储桶中。如果您的 Deadline Cloud 场使用共享文件系统存储资产，则可以使用其上的任何路径作为频道名称。您可以将频道托管在 Amazon S3 存储桶中，以便使用 AWS Identity and Access Management (IAM) 权限进行更广泛的访问。

你可以在[本地构建和测试软件包](build-test-packages-locally.md)，然后[将其发布到频道](publish-packages-s3-channel.md)。在本地构建软件包是一种无需设置基础架构即可开始迭代包构建配方的简便方法。您也可以使用 Deadline Cloud [包构建队列](automate-package-builds.md)来构建软件包并将其发布到频道。软件包生成队列简化了针对多个操作系统和加速器配置的软件包的维护。您可以随时随地更新版本并提交全套软件包构建。

您可以通过多种方式为工作室和 Deadline Cloud 农场配置频道。您可以拥有一个 Amazon S3 通道，并将所有工作站和场主机配置为使用该通道。您也可以拥有多个频道，并使用 AWS DataSync (DataSync) 设置镜像。例如，您的 Deadline Cloud 包构建队列可以发布到 Amazon S3 频道，该频道会在本地镜像工作站和本地服务器场主机。

**Topics**
+ [在本地构建和测试软件包](build-test-packages-locally.md)
+ [将包发布到 Amazon S3 conda 频道](publish-packages-s3-channel.md)
+ [为自定义 conda 包配置生产队列权限](#s3-channel-configure-permissions)
+ [向队列环境中添加 conda 频道](#s3-channel-add-channel)
+ [为应用程序或插件创建 conda 软件包](conda-package.md)
+ [为其创建 conda 构建配方 Blender](create-conda-recipe-blender.md)
+ [为其创建 conda 构建配方 Autodesk Maya](create-conda-recipe-maya.md)
+ [为插件创建 conda 构建配Autodesk Maya to Arnold (MtoA)方](create-conda-recipe-mtoa-plugin.md)
+ [使用截止日期云自动生成软件包](automate-package-builds.md)

# 在本地构建和测试软件包
<a name="build-test-packages-locally"></a>

在将软件包发布到 Amazon S3 或在 Deadline Cloud 服务器场上设置 CI/CD 自动化之前，您可以使用本地文件系统通道在工作站上构建和测试 conda 软件包。这种方法可以让您在本地快速迭代配方并验证软件包。

该`rattler-build publish`命令构建配方，将生成的包复制到频道，然后一步为该频道编制索引。当你以本地文件系统目录为目标时，如果该目录不存在，则会自动`rattler-build`创建和初始化该频道。

以下说明使用了 Deadline [Cloud](https://github.com/aws-deadline/deadline-cloud-samples) 示例存储库中的 Blender 4.5 示例配方GitHub。您可以替换样本存储库中的其他食谱，也可以使用自己的食谱。

## 先决条件
<a name="build-test-locally-prereqs"></a>

在开始之前，请在您的工作站上安装以下工具：
+ **pixi** — 用于安装`rattler-build`和测试软件包的软件包管理器。从 [pixi.sh](https://pixi.sh) 安装 pixi。
+ **rattler-build** — Deadline Cloud conda 配方使用的软件包构建工具。安装 pixi 后，运行以下命令进行安装`rattler-build`。

  ```
  pixi global install rattler-build
  ```
+ **git** — 克隆示例存储库所必需的。在Windows，[git f](https://gitforwindows.org/) or Windows 还提供了一个`bash`外壳，这是一些Windows示例配方所需要的。

## 生成套餐并将其发布到本地频道
<a name="build-test-locally-build"></a>

在此过程中，您将克隆 Deadline Cloud 示例存储库，然后使用`rattler-build publish`生成该包并将其发布到本地文件系统频道。

**生成软件包并将其发布到本地频道**

1. 克隆截止日期云示例存储库。

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 切换到 `conda_recipes` 目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 运行以下命令构建 Blender 4.5 配方并将软件包发布到本地频道目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml \
       --to file://$HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml ^
       --to file://%USERPROFILE%/my-conda-channel
   ```

   该`rattler-build publish`命令执行以下操作：
   + 根据配方构建软件包。
   + 如果频道目录不存在，则创建该目录。
   + 将软件包文件复制到频道。
   + 为频道编制索引，以便包管理员可以找到该软件包。

   如果你的包配方依赖于来自特定渠道（例如 [conda-forge](https://conda-forge.org/)）的软件包，请`-c conda-forge`添加到命令中。

要在对配方进行更改后重新生成软件包，请添加`--build-number=+1`以自动增加内部版本号。

```
rattler-build publish blender-4.5/recipe/recipe.yaml \
    --to file://$HOME/my-conda-channel \
    --build-number=+1
```

有关更多信息`rattler-build publish`，请参阅 [rattler-](https://rattler-build.prefix.dev/latest/publish/) build 发布文档。

## 调试版本
<a name="build-test-locally-debug"></a>

如果构建失败，则`rattler-build`会保留构建目录，以便您可以进行调查。运行以下命令在构建环境中打开一个交互式 shell，其中所有环境变量都与生成期间一样设置。

```
rattler-build debug shell
```

在调试 shell 中，您可以修改文件、运行单独的构建命令以及添加依赖关系以隔离问题。有关更多信息，请参阅 rattler-build 文档中的[调试构建](https://rattler-build.prefix.dev/latest/debugging_builds/)。

## 测试软件包
<a name="build-test-locally-test"></a>

生成并发布软件包后，创建一个临时 pixi 项目。使用该项目从本地渠道安装软件包并验证其是否正常运行。

**测试软件包**

1. 创建临时测试目录并使用本地频道初始化 pixi 项目。

   在 Linux an macOS d 上，运行以下命令。

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel file://$HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel file://%USERPROFILE%/my-conda-channel
   ```

1. 将软件包添加到项目中。

   ```
   pixi add blender=4.5
   ```

1. 验证软件包是否正常运行。

   ```
   pixi run blender --version
   ```

如果您对软件包感到满意，则可以将软件包发布到 Amazon S3 conda 频道，这样 Deadline Cloud 工作人员就可以安装该软件包。请参阅[将软件包发布到 S3 conda 频道](publish-packages-s3-channel.md)。

## 清理
<a name="build-test-locally-cleanup"></a>

测试完成后，您可以移除测试项目和本地频道。

**清理测试资源**

1. 移除测试项目目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf package-test-env
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q package-test-env
   ```

1. 移除本地 conda 频道目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf $HOME/my-conda-channel
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q %USERPROFILE%\my-conda-channel
   ```

1. （可选）移除包含已生成软件包文件的`rattler-build`输出目录。

   在 Linux and 上macOS，运行以下命令。

   ```
   rm -rf deadline-cloud-samples/conda_recipes/output
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rmdir /s /q deadline-cloud-samples\conda_recipes\output
   ```

# 将包发布到 Amazon S3 conda 频道
<a name="publish-packages-s3-channel"></a>

您可以将 conda 包发布到亚马逊简单存储服务 (Amazon S3) 存储桶，这样 AWS Deadline Cloud（Deadline Cloud）工作人员就可以安装它们来运行作业。该`rattler-build publish`命令在 Amazon S3 上的使用方式与使用本地文件系统通道的方式相同。该命令可以生成配方并发布结果，也可以发布您已经构建的包文件。在这两种情况下，该命令都会将包上传到存储桶，并一步为频道编制索引。

该`rattler-build publish`命令 AWS 使用标准凭证链进行身份验证，因此它像使用任何 AWS 工具一样使用您的 AWS 配置。有关配置凭据的更多信息，请参阅 *AWS Command Line Interface (AWS CLI) 用户指南*中的[配置和凭据文件设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

## 先决条件
<a name="publish-s3-prereqs"></a>

在将包发布到 Amazon S3 之前，请完成以下先决条件：
+ **pixi 和 rattler-build — 从 pixi.sh** [安装 pixi，然后安装。](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git** — 克隆示例存储库所必需的。在Windows，[git f](https://gitforwindows.org/) or Windows 还提供了一个`bash`外壳，这是一些Windows示例配方所需要的。
+ **亚马逊 S3 存储桶** — 用作 conda 通道的亚马逊 S3 存储桶。您可以使用 Deadline Cloud 场中的任务附件存储桶，也可以创建单独的存储桶。
+ **AWS 凭证**-使用`aws configure`命令或命令在您的工作站上配置凭据。`aws login`有关更多信息，请参阅 *AWS Command Line Interface 用户指南*中的[设置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)。
+ **IAM 权限** —（可选）要缩小您的证书所拥有的权限范围，您可以使用 AWS Identity and Access Management (IAM) 策略，该策略仅授予对 Amazon S3 存储桶和您使用的频道前缀的以下权限（例如，`/Conda/*`）：
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## 将包裹发布到 Amazon S3 频道
<a name="publish-s3-procedure"></a>

与`s3://`目标`rattler-build publish`一起使用，将包发布到您的 Amazon S3 conda 频道。如果存储桶中不存在该频道，则会自动`rattler-build`初始化该频道。在开始之前，请确保您已完成[先决条件](#publish-s3-prereqs)。

以下示例发布了 Deadline [Cloud](https://github.com/aws-deadline/deadline-cloud-samples) 示例存储库中的 Blender 4.5 示例配方GitHub。您可以替换样本存储库中的其他食谱，也可以使用自己的食谱。

**将包发布到 Amazon S3 频道**

1. 克隆截止日期云示例存储库。

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 切换到 `conda_recipes` 目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 运行如下命令。将 *amzn-s3-demo-bucket*替换为存储桶名称。

   在 Linux and 上macOS，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml \
       --to s3://amzn-s3-demo-bucket/Conda/Default
   ```

   在 Windows (cmd) 上，运行以下命令。

   ```
   rattler-build publish blender-4.5/recipe/recipe.yaml ^
       --to s3://amzn-s3-demo-bucket/Conda/Default
   ```

   前`/Conda/Default`缀组织存储桶内的频道。您可以使用不同的前缀，但该前缀在引用该频道的所有命令和队列配置中必须一致。

要重新生成和发布更新的软件包，请添加`--build-number=+1`以自动增加内部版本号。

```
rattler-build publish blender-4.5/recipe/recipe.yaml \
    --to s3://amzn-s3-demo-bucket/Conda/Default \
    --build-number=+1
```

如果你的包配方依赖于来自特定渠道（例如 [conda-forge](https://conda-forge.org/)）的软件包，请`-c conda-forge`添加到命令中。

您也可以发布已经生成的包文件，例如，来自本地版本的`.conda`文件。将 *amzn-s3-demo-bucket*替换为存储桶名称。

```
rattler-build publish output/linux-64/blender-4.5.0-hb0f4dca_0.conda \
    --to s3://amzn-s3-demo-bucket/Conda/Default
```

## 测试软件包
<a name="publish-s3-test"></a>

发布软件包后，创建一个临时 pixi 项目以验证软件包是否正常运行。该项目通过 Amazon S3 渠道安装软件包。

**测试软件包**

1. 创建临时测试目录并使用 Amazon S3 通道初始化一个 pixi 项目。将 *amzn-s3-demo-bucket*替换为存储桶名称。

   ```
   mkdir package-test-env
   cd package-test-env
   pixi init --channel s3://amzn-s3-demo-bucket/Conda/Default
   ```

1. 将软件包添加到项目中。

   ```
   pixi add blender=4.5
   ```

1. 验证软件包是否正常运行。

   ```
   pixi run blender --version
   ```

## 清理
<a name="publish-s3-cleanup"></a>

测试完成后，移除测试项目目录。

**清理测试资源**
+ 移除测试项目目录。

  在 Linux and 上macOS，运行以下命令。

  ```
  rm -rf package-test-env
  ```

  在 Windows (cmd) 上，运行以下命令。

  ```
  rmdir /s /q package-test-env
  ```

## 调试版本
<a name="publish-s3-debug"></a>

如果构建失败，则`rattler-build`会保留构建目录，以便您可以进行调查。运行以下命令在构建环境中打开一个交互式 shell，其中所有环境变量都与生成期间一样设置。

```
rattler-build debug shell
```

在调试 shell 中，您可以修改文件、运行单独的构建命令以及添加依赖关系以隔离问题。有关更多信息，请参阅 rattler-build 文档中的[调试构建](https://rattler-build.prefix.dev/latest/debugging_builds/)。

## 为其他平台构建软件包
<a name="publish-s3-cross-platform"></a>

该`rattler-build publish`命令为运行该命令的工作站的操作系统生成软件包。如果您的 Deadline Cloud 队列使用的操作系统与您的工作站不同，或者您的软件包有其他主机要求，则您可以选择以下选项：
+ `rattler-build publish`在与目标操作系统匹配的主机上运行。例如，使用Linux正在运行的亚马逊弹性计算云 (Amazon EC2) 实例为Linux队列构建软件包。
+ 使用 Deadline Cloud 软件包生成队列在目标平台上自动构建。请参见[创建包生成队列](automate-package-builds.md#s3-channel-create-queue)。
+ （高级）使用交叉编译为不同于工作站的不同平台构建软件包。有关更多信息，请参阅 rattler-[build 文档中的交叉编译](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation)。

## 后续步骤
<a name="publish-s3-next-steps"></a>

将包发布到 Amazon S3 conda 频道后，将您的 Deadline Cloud 队列配置为使用该频道：
+ [为自定义 conda 包配置生产队列权限](configure-jobs-s3-channel.md#s3-channel-configure-permissions) — 向您的生产队列授予对 Amazon S3 conda 频道的只读访问权限。
+ [向队列环境添加 conda 通道 — 配置队列环境](configure-jobs-s3-channel.md#s3-channel-add-channel)以安装来自 Amazon S3 conda 通道的软件包。

## 为自定义 conda 包配置生产队列权限
<a name="s3-channel-configure-permissions"></a>

您的生产队列需要队列的 S3 存储桶中`/Conda`前缀的只读权限。打开与生产队列关联的角色的 AWS Identity and Access Management (IAM) 页面，然后使用以下命令修改策略：

1. 打开 Deadline Cloud 控制台并导航到包生成队列的队列详细信息页面。

1. 选择队列服务角色，然后选择**编辑队列**。

1. 滚动至**队列服务角色**部分，然后选择在 **IAM 控制台中查看此角色**。

1. 从权限策略列表中，**AmazonDeadlineCloudQueuePolicy**为您的队列选择。

1. 从 “**权限**” 选项卡中，选择 “**编辑”**。

1. 向队列服务角色添加一个新部分，如下所示。*111122223333*用您自己的存储桶和账户替换*amzn-s3-demo-bucket*和。

   ```
   {
      "Effect": "Allow",
      "Sid": "CustomCondaChannelReadOnly",
      "Action": [
       "s3:GetObject",
       "s3:ListBucket"
      ],
      "Resource": [
       "arn:aws:s3:::amzn-s3-demo-bucket",
       "arn:aws:s3:::amzn-s3-demo-bucket/Conda/*"
      ],
      "Condition": {
       "StringEquals": {
        "aws:ResourceAccount": "111122223333"
       }
      }
     },
   ```

## 向队列环境中添加 conda 频道
<a name="s3-channel-add-channel"></a>

要使用 S3 conda 频道，您需要将`s3://amzn-s3-demo-bucket/Conda/Default`频道位置添加到提交给 Deadline Cloud 的任务`CondaChannels`参数中。Deadline Cloud 提供的提交者提供了用于指定自定义 conda 频道和套餐的字段。

您可以通过编辑生产队列的 conda 队列环境来避免修改每个作业。执行以下步骤：

1. 打开 Deadline Cloud 控制台并导航到生产队列的队列详细信息页面。

1. 选择 “环境” 选项卡。

1. 选择 **Conda** 队列环境，然后选择 “**编辑”**。

1. 选择 **JSON 编辑器**，然后在脚本中找到的参数定义`CondaChannels`。

1. 编辑该行，`default: "deadline-cloud"`使其从新创建的 S3 conda 通道开始：

   ```
   default: "s3://amzn-s3-demo-bucket/Conda/Default deadline-cloud"
   ```

默认情况下，服务管理舰队为 conda 启用灵活的频道优先级。对于请求新频道和频道中`blender=4.2`是否都有 Blender 4.2 的任务，将从`deadline-cloud`频道列表中第一个频道中提取包裹。如果在第一个频道中找不到指定的包版本，则将按软件包版本的顺序检查后续频道。

对于客户管理的舰队，您可以使用 Deadline Cloud 示例存储库中的一个 c [onda 队列环境示例来启用 conda](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/README.md) 软件包。GitHub

# 为应用程序或插件创建 conda 软件包
<a name="conda-package"></a>

conda 软件包是用任何语言编写的软件的压缩档案。Conda 支持各种操作系统和架构组合，因此您可以将完整的应用程序（如BlenderMaya、和）与 Python 和其他语言的库Nuke一起打包。有关 conda 软件包的更多信息，请参阅 conda 文档中的[软件包](https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/packages.html)。

要使用 conda 软件包，您需要将其安装到虚拟环境中。conda 虚拟环境有一个安装软件包*的前缀目录*。安装软件包时会使用硬链接或文件重新链接（如果支持），因此使用相同的软件包创建多个环境不会占用大量额外的磁盘空间。要使用虚拟环境，请将其激活以设置环境变量。激活运行软件包提供的脚本，使每个软件包都有机会修改 PATH 或其他环境变量。Conda 包通常包含应用程序或库，但灵活的激活意味着它们也可以指向安装在共享文件系统上的应用程序。

制作自定义软件包涉及三个阶段：*配方*包含构建说明，*软件包*是构建的工件（`.conda`或`.tar.bz2`文件），*频道*托管要安装的软件包。该`rattler-build publish`命令可以处理所有三个步骤——它可以将配方构建到包中并发布到频道，也可以直接使用包工件来发布它。

[conda-forge](https://conda-forge.org/) 社区维护着各种开源软件的软件包配方，并在频道中托管软件包工件。`conda-forge`您可以将队列配置`conda-forge`为包源，然后构建依赖于 conda-forge 软件包运行的自定义包。对于Linux，conda-forge 托管了一个完整的编译器工具链，包括 CUDA 支持，并选择了一致的编译和链接选项。你可以在自己的配方中使用 conda-forge 包作为依赖项，也可以将它们与自定义软件包一起安装在同一个环境中。

您可以将整个应用程序（包括依赖关系）组合成一个 conda 包。[Deadline Cloud 在截止日期云频道](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment)中为服务管理的车队提供的软件包使用这种二进制重新打包方法。这会组织与安装文件相同的文件，以适合 conda 虚拟环境。

**注意**  
大型应用程序可能需要数十 GB 的可用磁盘空间来存放源存档、提取的文件和生成输出。请确保使用具有足够可用空间的磁盘，用于软件包生成输出。

## Package 打包应用程序
<a name="conda-package-application"></a>

在为 conda 重新打包应用程序时，有两个目标：
+ 应用程序的大多数文件应与主要 conda 虚拟环境结构分开。然后，环境可以将应用程序与来自其他来源（例如 [conda-](https://conda-forge.org/) forge）的软件包混合在一起。
+ 激活 conda 虚拟环境后，应该可以从 PATH 环境变量中访问该应用程序。

**为 conda 重新打包应用程序**

1. 编写 conda 构建配方，将应用程序安装到类似的子目录中。`$CONDA_PREFIX/opt/<application-name>`这会将其与标准前缀目录（如`bin`和`lib`）区分开来。

1. 向添加符号链接或启动脚本`$CONDA_PREFIX/bin`以运行应用程序二进制文件。

   或者，创建 activate.d 脚本，该`conda activate`命令将运行该脚本以将应用程序的二进制目录添加到 PATH 中。如果在Windows任何可以创建环境的地方都不支持符号链接，请改用应用程序启动或 activate.d 脚本。

1. 某些应用程序依赖于 Deadline Cloud 服务管理的队列上默认未安装的库。例如，对于非交互式作业，通常不需要 X11 窗口系统，但有些应用程序仍然要求它在没有图形界面的情况下运行。您必须在创建的包中提供这些依赖关系。

1. 如果应用程序支持插件，请提供一个明确的约定，即插件包在虚拟环境中与应用程序集成时应遵循该约定。例如，[Maya2026 年的示例配方](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-2026#instructions-for-maya-plugin-packages)记录了Maya插件的这一惯例。

1. 确保您遵守所打包的应用程序的版权和许可协议。我们建议使用私有 Amazon S3 存储桶作为您的 conda 频道，以控制分发并限制对服务器场的包访问权限。

该`deadline-cloud`频道中套餐的示例配方可在上的 De [adline Cloud 示例](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes#readme)存储库中找到GitHub。

## Package 一个插件
<a name="conda-package-plugins"></a>

应用程序插件可以打包成自己的 conda 包。创建插件包时，请遵循以下准则：
+ 将主机应用程序包作为构建依赖项和运行依赖项包含在构建配方中`recipe.yaml`。使用版本限制，这样编译配方只能与兼容的软件包一起安装。
+ 按照主机应用程序包约定注册插件。

## 适配器套装
<a name="conda-package-adaptors"></a>

某些 Deadline Cloud 应用程序集成使用*适配器*来扩展应用程序界面，以简化[作业模板的编写](building-jobs.md)。适配器是一个命令行界面，支持运行后台守护程序、报告状态和应用路径映射。有关更多信息，请参阅上的 Ope [n Job Description Adaptor 运行时](https://github.com/OpenJobDescription/openjd-adaptor-runtime-for-python#readme)。GitHub例如，[deadline-cloud-for-maya](https://github.com/aws-deadline/deadline-cloud-for-maya/)on GitHub 包括集成的作业提交 GUI 和一个Maya适配器，该适配器可在服务管理的队列中作为`maya-openjd`软件包使用。

Deadline Cloud 提交者提交的作业 GUIs 包括一个`CondaPackages`参数值，该参数值指定要包含在虚拟环境中以运行作业的 conda 包。的`CondaPackages`参数值Maya通常看起来像`maya=2025.* maya-openjd=0.15.* maya-mtoa`，可能包含插件包的替代条目。当队列环境设置用于运行作业的 conda 虚拟环境时，它会解析这些软件包名称和版本限制以使其兼容，并添加它们运行所需的所有依赖包。每个适配器和插件包都指定了与之兼容的内容，包括哪些版本Maya、Python 的版本以及其他依赖项。

[要使用我们的示例（例如 [maya-openjd 配方）构建自己的适配器包GitHub，您可以在 conda-](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-openjd) forge 提供的 Python 包和其他依赖项的基础上构建。](https://conda-forge.org/)您可能需要先确定[截止日期](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/deadline)和[openjd-adaptor-runtime](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/openjd-adaptor-runtime)配方以满足依赖关系。

# 为其创建 conda 构建配方 Blender
<a name="create-conda-recipe-blender"></a>

您可以使用不同的应用程序来创建 conda 构建配方。 Blender可以免费使用，使用 conda 打包也很简单。Blender基金会为多个操作系统提供[应用程序档案](https://download.blender.org/release/Blender4.2/)。我们创建了一个使用 Windows .zip 和 Linux .tar.xz 文件的示例 conda 构建配方。在本节中，学习如何使用 [Blender4.2 conda 构建配方](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2)。

d [eadline-cloud.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2) 文件指定了用于向 Deadline Cloud 提交包任务的 conda 平台和其他元数据。此配方包括本地源存档信息，以演示其工作原理。linux-64 conda 平台设置为内置默认作业提交，以匹配最常见的配置。deadline-cloud.yaml 看起来类似于以下内容：

```
condaPlatforms:
  - platform: linux-64
    defaultSubmit: true
    sourceArchiveFilename: blender-4.2.1-linux-x64.tar.xz
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-linux-x64.tar.xz"'
  - platform: win-64
    defaultSubmit: false
    sourceArchiveFilename: blender-4.2.1-windows-x64.zip
    sourceDownloadInstructions: 'Run "curl -LO https://download.blender.org/release/Blender4.2/blender-4.2.1-windows-x64.zip"'
```

查看`recipe`目录中的文件。食谱的元数据位于 recipe/reci [pe.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/recipe.yaml) 中。您还可以阅读 conda build [meta.yaml](https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html) 文档以了解更多信息，例如该文件如何成为生成 YAML 的模板。该模板仅用于指定一次版本号，并根据操作系统提供不同的值。

您可以查看中选定的构建选项，`meta.yaml`以关闭各种二进制文件重定位和动态共享对象 (DSO) 链接检查。这些选项控制软件包安装到任何目录前缀的 conda 虚拟环境中的工作方式。默认值简化了将每个依赖库打包成单独的包的过程，但是在对应用程序进行二进制重新打包时，需要对其进行更改。

如果您要打包的应用程序需要额外的依赖库，或者您要单独打包应用程序的插件，则可能会遇到 DSO 错误。当依赖关系不在需要它的可执行文件或库的库的库搜索路径中时，就会发生这些错误。安装在系统上时，应用程序依赖库位于全局定义的路径中`/usr/lib`，例如`/lib`或。但是，由于 conda 虚拟环境可以放置在任何地方，因此没有绝对的使用路径。Conda 使用相对的 RPATH 功能（两者Linux兼而有之macOS）来处理这个问题。有关更多信息，请参阅有关[使软件包可重定位的](https://docs.conda.io/projects/conda-build/en/latest/resources/make-relocatable.html) conda 构建文档。

Blender不需要任何 RPATH 调整，因为在构建应用程序存档时就考虑到了这一点。对于确实需要它的应用程序，你可以使用与 conda build 相同的工具：`patchelf`在 Linux 和更高版本`install_name_tool`上macOS。

在软件包构建过程中，运行 [build.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build.sh) 或 [build\$1win.sh](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/blender-4.2/recipe/build_win.sh)（由调用`bld.bat`）脚本将文件安装到使用软件包依赖关系准备的环境中。这些脚本复制安装文件，从中`$PREFIX/bin`创建符号链接并设置激活脚本。开启Windows，它不创建符号链接，而是将 Blender 目录添加到激活脚本中的 PATH 中。

在 con `cmd.exe` da 构建配方中，我们使用.bat 文件来`bash`代替.bat 文件，因为这样可以提高构建脚本的一致性。Windows有关在上使用的`bash`提示，请参阅 De [adline Cloud 开发者指南](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/what-is-a-deadline-cloud-workload.html#workload-portability)关于工作负载可移植性的建议。Windows如果你已经安装了 [git fo Windows](https://gitforwindows.org/) r 来克隆 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/)git 存储库，那么你已经可以访问了`bash`。

[conda 构建环境变量](https://docs.conda.io/projects/conda-build/en/latest/user-guide/environment-variables.html)文档列出了可在生成脚本中使用的值。这些值包括`$SRC_DIR`源存档数据、`$PREFIX`安装目录、`$RECIPE_DIR`访问配方中的其他文件、软件包名称`$PKG_NAME`和`$PKG_VERSION`版本以及目标 conda 平台`$target_platform`的值。

## 提交 Blender 4.2 软件包任务
<a name="s3-channel-build-blender"></a>

您可以构建自己的 Blender 4.2 conda 包来渲染作业，方法是下载Blender存档，然后将作业提交到包构建队列。队列将任务发送到关联队列以构建软件包并重新索引 conda 频道。

[这些说明使用兼容 bash 的 shell 中的 git 来获取 OpenJD 包构建任务，并从 Deadline Cloud 示例存储库中获取 conda 配方。GitHub](https://github.com/aws-deadline/deadline-cloud-samples)您需要以下项目：
+ 如果你使用的是Windows，则在安装 git 时会安装一个 bash 版本 git BASH。
+ 你必须安装 De [adline Cloud CLI](https://github.com/aws-deadline/deadline-cloud)。
+ 您必须登录 De [adline Cloud 监控器](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html)。

1. 使用以下命令打开 Deadline Cloud 配置 GUI，然后将默认服务器场和队列设置为包构建队列。

   ```
   deadline config gui
   ```

1. 使用以下命令克隆 Deadline Cloud 示例GitHUb存储库。

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. 切换到`conda_recipes`目录中的`deadline-cloud-samples`目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 运行名为的脚本`submit-package-job`。该脚本提供了首次运行脚本时的下载Blender说明。

   ```
   ./submit-package-job blender-4.2/
   ```

1. 按照说明进行下载Blender。存档文件后，再次运行`submit-package-job`脚本。

   ```
   ./submit-package-job blender-4.2/
   ```

提交作业后，使用 Deadline Cloud 监控器查看作业运行时的进度和状态。

监视器的左下角显示了任务的两个步骤，即生成软件包，然后重新编制索引。右下角显示了每项任务的各个步骤。在此示例中，每个任务都有一个步骤。

![\[Deadline Cloud 监视器显示构建Blender软件包的任务的进度和状态。\]](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/developerguide/images/Conda-Figure3.png)


监视器的左下角是工作的两个步骤，即构建软件包，然后重新索引 conda 频道。右下角是每个步骤的单独任务。在此示例中，每个步骤只有一个任务。

当您右键单击包构建步骤的任务并选择 “**查看日志**” 时，监视器会显示会话操作列表，显示任务在工作器上的计划方式。这些操作是：
+ **同步附件**-此操作复制输入作业附件或装载虚拟文件系统，具体取决于作业附件文件系统使用的设置。
+ **启动 Conda** — 此操作来自创建队列时默认添加的队列环境。该作业没有指定任何 conda 软件包，因此它可以快速完成并且不会创建 conda 虚拟环境。
+ La@@ **unch CondaBuild Env** — 此操作可创建自定义 conda 虚拟环境，其中包括构建 conda 包和重新索引频道所需的软件。它从 [conda-forge 频道](https://conda-forge.org/)安装。
+ **任务运行**-此操作生成Blender包并将结果上传到 Amazon S3。

操作运行时，它们会以结构化格式向 Amazon 发送日志 CloudWatch。作业完成后，选择 “**查看所有任务的**日志” 以查看有关作业运行环境的设置和拆除的其他日志。

# 使用 Blender 4.2 渲染作业测试你的软件包
<a name="s3-channel-submit-job"></a>

在构建 Blender 4.2 包并将生产队列配置为使用 S3 conda 通道后，您可以提交作业以使用该包进行渲染。如果你没有Blender场景，可以从[Blender演示文件](https://www.blender.org/download/demo-files)页面下载 Blender 3.5-Cozy Kitchen 场景。

您之前下载的 Deadline Cloud 示例GitHub存储库包含一个使用以下命令渲染Blender场景的示例作业：

```
deadline bundle submit blender_render \
     -p CondaPackages=blender=4.2 \
     -p BlenderSceneFile=/path/to/downloaded/blender-3.5-splash.blend \
     -p Frames=1
```

你可以使用 Deadline Cloud 监控器来跟踪你的工作进度：

1. 在监视器中，为您提交的作业选择任务，然后选择查看日志的选项。

1. 在日志视图的右侧，选择 “**启动 Conda** 会话” 操作。

你可以看到，该操作在为队列环境配置的两个 conda 通道中搜索了 Blender 4.2，并且它在 S3 通道中找到了软件包。

# 为其创建 conda 构建配方 Autodesk Maya
<a name="create-conda-recipe-maya"></a>

您可以将商业应用程序打包为 conda 软件包。在为 c [reate a conda 构建配方](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/conda-package.html#create-conda-recipe-blender)中Blender，你学习了如何打包一个应用程序，该应用程序可以作为一个简单的可重定位存档文件使用，并且符合开源许可条款。商业应用程序通常通过安装程序分发，并且可能有许可证管理系统可供使用。

以下列表基于[为应用程序或插件创建 conda 包中介绍的基础知识构建，其中包含打包商业应用程序](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/conda-package.html)时通常涉及的要求。子要点中的详细信息说明了如何将指南应用于。Maya
+ 了解应用程序的许可权和限制。您可能需要配置许可证管理系统。如果应用程序不包括强制执行，则需要根据自己的权限配置服务器场。
  + 阅读[有关云权限的Autodesk订阅权益常见问题解答](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Subscription-Benefits-FAQ-Cloud-Rights.html)，了解Maya可能适用于您的云权限。根据需要配置您的 Deadline 云场。
  + Autodesk产品依赖名为的文件`ProductInformation.pit`。此文件的大部分配置都需要管理员访问系统，而服务管理的队列不提供此权限。瘦客户机的产品功能提供了一种可重定位的方式来处理这个问题。要了解更多信息，请参阅[适用于 Maya MotionBuilder 的瘦客户机许可](https://www.autodesk.com/support/technical/article/caas/tsarticles/ts/2zqRBCuGDrcPZDzULJQ27p.html)。
+ 某些应用程序依赖于未安装在服务管理的舰队工作主机上的库，因此软件包必须提供这些库。这可以直接放在应用程序包中，也可以放在单独的依赖包中。
  + Maya取决于许多这样的库，包括 freetype 和 fontconfig。当这些库在系统包管理器中可用时（例如在 f `dnf` o AL2023 r 中），则可以将其用作应用程序的源代码。由于这些 RPM 包不是为可重定位而构建的，因此您需要使用诸如之类的工具`patchelf`来确保在Maya安装前缀中解析依赖关系。
+ 安装可能需要管理员访问权限。由于服务管理队列不提供管理员访问权限，因此您需要在具有此访问权限的系统上进行安装。然后，创建包生成任务使用的文件存档。
  + 的Windows安装程序Maya需要管理员访问权限，因此为其构建 conda 软件包需要手动完成创建此类存档的过程。
+ 可以在操作系统或用户级别定义应用程序配置，包括插件向其注册的方式。当插件放置在 conda 虚拟环境中时，需要一种能够以一种包含的方式与应用程序集成，并且永远不会在虚拟环境前缀之外写入文件或其他数据。我们建议你从应用程序的 conda 包中进行设置。
  + 该示例Maya包定义了环境变量`MAYA_NO_HOME=1`以将其与用户级别的配置隔离开来，并在其中添加了模块搜索路径，`MAYA_MODULE_PATH`以便单独打包的插件可以从虚拟环境中集成。示例MtoA包将.mod 文件放在其中一个目录中，以便在Maya启动时加载。

**写下食谱元数据**

1. 在浏览器中打开 GitHub [ deadline-cloud-samples/conda\$1recipes/maya-2025](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-2025) 目录，或者在存储库的本地克隆版本中的文本编辑器中打开。

   该文件`deadline-cloud.yaml`描述了用于构建软件包的 conda 构建平台以及从哪里获取应用程序。配方示例同时指定了Linux和Windows构建，并且Linux仅在默认情况下才会提交。

1. 从您的Autodesk登录处下载完整的Maya安装程序。对于Linux，软件包版本可以直接使用存档，因此请将其直接放入`conda_recipes/archive_files`目录中。对于Windows，安装程序需要管理员访问权限才能运行。您需要运行安装程序并将所需文件收集到要使用的软件包配方的存档中。配方中的 [README.md](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-2025/README.md) 文件记录了创建此工件的可重复过程。该过程使用新启动的 Amazon EC2 实例为安装提供干净的环境，然后可以在保存结果后终止该环境。要打包其他需要管理员访问权限的应用程序，在确定应用程序所需的文件集后，可以按照类似的步骤进行打包。

1. 打开 [recipe/recipe.yaml 和 recipe/meta.yaml 文件](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-2025/recipe/recipe.yaml)[来查看或编辑 rattler-build 和 conda-](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-2025/recipe/meta.yaml) build 的设置。您可以为要打包的应用程序设置软件包名称和版本。

   **源代码**部分包含对档案的引用，包括文件的 sha256 哈希值。无论何时更改这些文件（例如更改为新版本），都需要计算和更新这些值。

   **构建**部分主要包含关闭默认二进制重定位选项的选项，因为对于软件包使用的特定库和二进制目录，自动机制将无法正常工作。

   最后，“**关于**” 部分允许您输入一些有关应用程序的元数据，这些元数据可以在浏览或处理 conda 频道的内容时使用。

**编写软件包生成脚本**

1. conda 构建配方Maya示例中的软件包构建脚本包含解释脚本执行步骤的注释。通读评论和命令以发现以下内容：
   + 配方如何处理来自 RPM 文件 Autodesk
   + 配方为使安装可重定位到安装配方的 conda 虚拟环境而应用的更改
   + 配方如何设置实用程序变量，例如`MAYA_LOCATION`和`MAYA_VERSION`，您的软件可以使用这些变量来了解Maya其正在运行的内容。

1. 对于Linux，打开 [recipe/build.sh](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-2025/recipe/build.sh) 文件以查看或编辑软件包生成脚本。

   对于Windows，打开 [recipe/build\$1win.sh](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-2025/recipe/build_win.sh) 文件以查看或编辑软件包生成脚本。

**提交一份生成Maya软件包的作业**

1. 输入 GitHub [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples)存储库克隆版中的`conda_recipes`目录。

1. 确保已为 Deadline Cloud CLI 配置了 Deadline Cloud 场。如果您按照[使用 Amazon S3 创建 conda 通道](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs-s3-channel.html)的步骤进行操作，则应针对您的 CLI 配置您的服务器场。

1. 运行以下命令提交同时生成Linux和Windows软件包的作业。

   ` ./submit-package-job maya-2025 --all-platforms`

# 为插件创建 conda 构建配Autodesk Maya to Arnold (MtoA)方
<a name="create-conda-recipe-mtoa-plugin"></a>

您可以将商业应用程序的插件打包为 conda 包。插件是动态加载的库，它们使用应用程序提供的应用程序二进制接口 (ABI) 来扩展该应用程序的功能。该Maya to Arnold (MtoA)插件将Arnold渲染器添加为其中的Maya一个选项。
+ MtoA示例构建配方取决于**Maya**软件包，并对版本使用`==`约束。
+ 该Maya软件包在虚拟环境中配置Maya模块路径`$PREFIX/usr/autodesk/maya$MAYA_VERSION/modules`，以便插件在其中放置`.mod`文件。MtoA示例构建配方在此目录`mtoa.mod`中创建了一个文件。

**写下食谱元数据**

1. 在浏览器中打开 GitHub [ deadline-cloud-samples/conda\$1recipes/maya-mtoa-2025](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes/maya-mtoa-2025) 目录，或者在存储库的本地克隆版本中的文本编辑器中打开。

   该配方遵循与 Maya conda 构建配方相同的模式，并使用相同的源存档来安装插件。

1. 打开 [recipe/recipe.yaml 和 recipe/meta.yaml 文件](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-mtoa-2025/recipe/recipe.yaml)[来查看或编辑 rattler-build 和 conda-](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/conda_recipes/maya-mtoa-2025/recipe/meta.yaml) build 的设置。这些文件指定了软件包构建`maya`期间以及创建虚拟环境以运行插件时的依赖关系。

**编写软件包生成脚本**
+ conda 构建配方MtoA示例中的软件包构建脚本包含解释脚本执行步骤的注释。通读注释和命令，了解配方如何在Maya软件包指定的目录`mtoa.mod`中安装MtoA和创建文件。

  Arnold并Maya使用相同的许可技术，因此 Maya conda build 配方已经包含了Arnold所需的信息。

  Linux和Windows编译脚本之间的区别与 Maya conda 构建配方的差异类似。

**提交一份构建Maya MtoA插件包的作业**

1. 输入 GitHub [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples)存储库克隆版中的`conda_recipes`目录。

1. 确保您已经为上一节中的Maya宿主应用程序构建了软件包。

1. 确保已为 Deadline Cloud CLI 配置了 Deadline Cloud 场。如果您按照[使用 Amazon S3 创建 conda 通道](https://docs.aws.amazon.com/deadline-cloud/latest/developerguide/configure-jobs-s3-channel.html)的步骤进行操作，则应针对您的 CLI 配置您的服务器场。

1. 运行以下命令提交同时生成Linux和Windows软件包的作业。

   ` ./submit-package-job maya-mtoa-2025 --all-platforms`

# 使用Maya渲染作业测试你的软件包
<a name="submit-render-maya-mtoa"></a>

构建 Maya 2025 和MtoA软件包后，您可以提交任务以使用软件包进行渲染。[带有Maya/Arnold任务捆绑包示例的转盘使用](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/turntable_with_maya_arnold)和渲染动画。Maya Arnold此示例还用于 FFmpeg 对视频进行编码。你可以将 conda-forge 频道添加到 conda 队列环境`CondaChannels`中的默认列表中，为包提供来源。`ffmpeg`

从 git clone 的`job_bundles`目录中 [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples)，运行以下命令。

```
deadline bundle submit turntable_with_maya_arnold
```

你可以使用 Deadline Cloud 监控器来跟踪你的工作进度：

1. 在监视器中，为您提交的作业选择任务，然后选择查看日志的选项。

1. 在日志视图的右侧，选择 “**启动 Conda** 会话” 操作。

你可以看到，该操作maya-mtoa在为队列环境配置的 conda 通道中搜索maya和查找，并且它在 S3 通道中找到了软件包。

# 使用截止日期云自动生成软件包
<a name="automate-package-builds"></a>

对于 CI/CD 工作流程或需要为多个操作系统构建软件包时，可以创建 Deadline Cloud 软件包生成队列。队列计划在您的队列上构建任务，队列生成软件包并将其发布到您的亚马逊简单存储服务 (Amazon S3) Simple Storage Service conda 频道。这简化了在所有必需配置中为软件版本维护持续构建软件包的过程。

您可以使用 AWS CloudFormation (CloudFormation) 模板创建包生成队列，也可以从 Deadline Cloud 控制台手动创建包构建队列。该 CloudFormation 模板部署了一个完整的服务器场，其中已配置了生产队列和包构建队列。通过控制台创建队列可以更好地控制各个设置。

## 使用创建包生成队列 CloudFormation
<a name="s3-channel-create-queue-cfn"></a>

您可以使用 CloudFormation 模板来创建包含包构建队列的 Deadline Cloud 场。该模板使用私有 Amazon S3 conda 通道配置生产队列和包生成队列。

在部署模板之前，请创建一个 Amazon S3 存储桶来存放任务附件和您的 conda 频道。您可以从 [Amazon S3 控制台](https://console.aws.amazon.com/s3/)创建存储桶。部署模板时需要存储桶名称。

**部署 CloudFormation 模板**

1. [从 Deadline Cloud 示例存储库中下载 [deadline-cloud-starter-farm-template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/raw/mainline/cloudformation/farm_templates/starter_farm/deadline-cloud-starter-farm-template.yaml) 模板。](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm) GitHub

1. 在[CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/)中，选择**创建堆栈**，然后选择**使用新资源（标准）**。

1. 选择上传模板文件的选项，然后上传该`deadline-cloud-starter-farm-template.yaml`文件。

1. 输入堆栈的名称，例如**StarterFarm**，并提供任务附件的 Amazon S3 存储桶的名称和 conda 频道。

1. 按照 CloudFormation 控制台步骤完成堆栈创建。

有关模板参数和自定义选项的更多信息，请参阅 De [adline Cloud 示例存储库中的入门农场自述文件](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/starter_farm)。GitHub

## 从控制台创建包生成队列
<a name="s3-channel-create-queue"></a>

按照《De *adline Cloud 用户指南*[》中创建队列](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue.html)中的说明进行操作。进行以下更改：
+ 在步骤 5 中，选择现有的 Amazon S3 存储桶。指定根文件夹名称（例如），**DeadlineCloudPackageBuild**以便生成工件与普通的 Deadline Cloud 附件分开。
+ 在步骤 6 中，您可以将包构建队列与现有队列相关联，或者如果当前队列不合适，则可以创建全新的队列。
+ 在步骤 9 中，为包生成队列创建一个新的服务角色。您将修改权限，为队列提供上传包和重新索引 conda 频道所需的权限。

### 配置包生成队列权限
<a name="package-building-queue-permissions"></a>

要允许包生成队列访问队列的 Amazon S3 存储桶中的`/Conda`前缀，您必须修改队列的角色以授予其 read/write 访问权限。该角色需要以下权限，以便包生成任务可以上传新包并重新编入频道索引。
+ `s3:GetObject`
+ `s3:PutObject`
+ `s3:ListBucket`
+ `s3:GetBucketLocation`
+ `s3:DeleteObject`

1. 打开 Deadline Cloud 控制台并导航到包生成队列的队列详细信息页面。

1. 选择队列服务角色，然后选择**编辑队列**。

1. 滚动至**队列服务角色**部分，然后选择在 **IAM 控制台中查看此角色**。

1. 从权限策略列表中，**AmazonDeadlineCloudQueuePolicy**为您的队列选择。

1. 从 “**权限**” 选项卡中，选择 “**编辑”**。

1. 向队列服务角色添加一个新部分，如下所示。*111122223333*用您自己的存储桶和账户替换*amzn-s3-demo-bucket*和。

   ```
   {
      "Effect": "Allow",
      "Sid": "CustomCondaChannelReadWrite",
      "Action": [
       "s3:GetObject",
       "s3:PutObject",
       "s3:DeleteObject",
       "s3:ListBucket",
       "s3:GetBucketLocation"
      ],
      "Resource": [
       "arn:aws:s3:::amzn-s3-demo-bucket",
       "arn:aws:s3:::amzn-s3-demo-bucket/Conda/*"
      ],
      "Condition": {
       "StringEquals": {
        "aws:ResourceAccount": "111122223333"
       }
      }
     },
   ```

## 提交软件包构建任务
<a name="automate-submit-package-job"></a>

创建包生成队列并配置队列权限后，您可以提交任务来构建 conda 包。De [adline Cloud 示例](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/conda_recipes#readme)存储库中的`submit-package-job`脚本GitHub提交了 conda 配方的构建作业。

您需要以下项：
+ 您的工作站上安装了 De [adline Cloud CLI](https://github.com/aws-deadline/deadline-cloud)。
+ 活动的 De [AWS adline 云监视器（截止日期云监视器）](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/working-with-deadline-monitor.html)登录会话。
+ Deadline [Cloud 示例](https://github.com/aws-deadline/deadline-cloud-samples)存储库的克隆。

**提交软件包生成任务**

1. 打开 Deadline Cloud 配置 GUI，将默认服务器场和队列设置为你的包构建队列。

   ```
   deadline config gui
   ```

1. 切换到示例存储库中的`conda_recipes`目录。

   ```
   cd deadline-cloud-samples/conda_recipes
   ```

1. 使用配方目录运行`submit-package-job`脚本。以下示例构建 Blender 4.5 配方。

   ```
   ./submit-package-job blender-4.5/
   ```

   如果配方需要您尚未下载的源存档，则脚本会提供下载说明。下载存档并再次运行脚本。

提交作业后，使用 Deadline Cloud 监控器查看任务的进度和状态。

![\[Deadline Cloud 监视器显示构建 conda 包的任务的进度和状态。\]](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/developerguide/images/Conda-Figure3.png)


监视器显示了工作的两个步骤：构建软件包，然后重新索引 conda 频道。右键单击包构建步骤的任务并选择 “**查看日志**” 时，监视器会显示会话操作：
+ **同步附件**-复制输入作业附件或装载虚拟文件系统。
+ **启动 Conda** — 队列环境操作。构建任务未指定 conda 包，因此此操作很快就会完成。
+ La@@ **unch CondaBuild Env** — 使用构建 conda 包和重新索引频道所需的软件创建 conda 虚拟环境。
+ **任务运行** — 生成软件包并将结果上传到 Amazon S3。

操作运行时，它们会向 Amazon CloudWatch (CloudWatch) 发送日志。任务完成后，选择 “**查看所有任务的日志**” 以查看有关环境设置和拆卸的其他日志。