本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将包发布到 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-buildpixi 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
将包发布到 Amazon S3 频道
-
克隆截止日期云示例存储库。
git clone https://github.com/aws-deadline/deadline-cloud-samples.git -
切换到
conda_recipes目录。cd deadline-cloud-samples/conda_recipes -
运行如下命令。将
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 渠道安装软件包。
测试软件包
-
创建临时测试目录并使用 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 -
将软件包添加到项目中。
pixi add blender=4.5 -
验证软件包是否正常运行。
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 队列配置为使用该频道:
-
为自定义 conda 包配置生产队列权限 — 向您的生产队列授予对 Amazon S3 conda 频道的只读访问权限。
-
向队列环境添加 conda 通道 — 配置队列环境以安装来自 Amazon S3 conda 通道的软件包。