将包发布到 Amazon S3 conda 频道 - 截止日期云

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

将包发布到 Amazon S3 conda 频道

您可以将 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) 用户指南中的配置和凭据文件设置

先决条件

在将包发布到 Amazon S3 之前,请完成以下先决条件:

  • pixi 和 rattler-build — 从 pixi.sh 安装 pixi,然后安装。 rattler-build

    pixi global install rattler-build
  • git — 克隆示例存储库所必需的。在Windows,git f or Windows 还提供了一个bash外壳,这是一些Windows示例配方所需要的。

  • 亚马逊 S3 存储桶 — 用作 conda 通道的亚马逊 S3 存储桶。您可以使用 Deadline Cloud 场中的任务附件存储桶,也可以创建单独的存储桶。

  • AWS 凭证-使用aws configure命令或命令在您的工作站上配置凭据。aws login有关更多信息,请参阅 AWS Command Line Interface 用户指南中的设置 AWS CLI

  • IAM 权限 —(可选)要缩小您的证书所拥有的权限范围,您可以使用 AWS Identity and Access Management (IAM) 策略,该策略仅授予对 Amazon S3 存储桶和您使用的频道前缀的以下权限(例如,/Conda/*):

    • s3:GetObject

    • s3:PutObject

    • s3:DeleteObject

    • s3:ListBucket

    • s3:GetBucketLocation

将包裹发布到 Amazon S3 频道

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

以下示例发布了 Deadline Cloud 示例存储库中的 Blender 4.5 示例配方GitHub。您可以替换样本存储库中的其他食谱,也可以使用自己的食谱。

将包发布到 Amazon S3 频道
  1. 克隆截止日期云示例存储库。

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git
  2. 切换到 conda_recipes 目录。

    cd deadline-cloud-samples/conda_recipes
  3. 运行如下命令。将 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)的软件包,请-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

测试软件包

发布软件包后,创建一个临时 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
  2. 将软件包添加到项目中。

    pixi add blender=4.5
  3. 验证软件包是否正常运行。

    pixi run blender --version

清理

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

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

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

    rm -rf package-test-env

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

    rmdir /s /q package-test-env

调试版本

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

rattler-build debug shell

在调试 shell 中,您可以修改文件、运行单独的构建命令以及添加依赖关系以隔离问题。有关更多信息,请参阅 rattler-build 文档中的调试构建

为其他平台构建软件包

rattler-build publish命令为运行该命令的工作站的操作系统生成软件包。如果您的 Deadline Cloud 队列使用的操作系统与您的工作站不同,或者您的软件包有其他主机要求,则您可以选择以下选项:

  • rattler-build publish在与目标操作系统匹配的主机上运行。例如,使用Linux正在运行的亚马逊弹性计算云 (Amazon EC2) 实例为Linux队列构建软件包。

  • 使用 Deadline Cloud 软件包生成队列在目标平台上自动构建。请参见创建包生成队列

  • (高级)使用交叉编译为不同于工作站的不同平台构建软件包。有关更多信息,请参阅 rattler-build 文档中的交叉编译

后续步骤

将包发布到 Amazon S3 conda 频道后,将您的 Deadline Cloud 队列配置为使用该频道: