本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將套件發佈至 Amazon S3 conda 頻道
您可以將 conda 套件發佈到 Amazon Simple Storage Service (Amazon S3) 儲存貯體,以便 AWS 截止日期雲端 (截止日期雲端) 工作者可以安裝它們來執行任務。此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 Windows
也提供 bashshell,其中一些Windows範例配方需要。 -
Amazon S3 儲存貯體 – 用作 conda 頻道的 Amazon S3 儲存貯體。您可以從截止日期雲端陣列使用任務附件儲存貯體,或建立單獨的儲存貯體。
-
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 頻道
使用 rattler-build publish搭配 s3://目標,將套件發佈到您的 Amazon S3 Conda 頻道。如果頻道不存在於儲存貯體中, 會自動rattler-build初始化頻道。開始之前,請確定您已完成先決條件。
下列範例會從 上的截止日期雲端範例儲存庫發佈 Blender4.5 範例配方GitHub。 https://github.com/aws-deadline/deadline-cloud-samples
注意
大型應用程式可能需要數十 GB 的可用磁碟空間,才能進行來源封存、解壓縮檔案和建置輸出。請確定您使用的磁碟有足夠的可用空間供套件建置輸出使用。
將套件發佈至 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取代為您的儲存貯體名稱。rattler-build publish blender-4.5/recipe/recipe.yaml --to s3://amzn-s3-demo-bucket/Conda/Default --build-number=+1/Conda/Default字首會在儲存貯體中組織頻道。您可以使用不同的字首,但參考頻道的所有命令和佇列組態的字首必須一致。
關於組建編號
--build-number=+1 選項會根據目的地頻道中已存在的內容,自動挑選下一個建置編號。最佳實務是絕不覆寫頻道中的套件。如果套件具有相同的檔案名稱,則一律建置為新的組建編號。當您建置到生產頻道或反映生產的預備頻道時,使用 會--build-number=+1達成此目標。
如果您想要直接控制建置編號,您可以使用 等特定值來設定建置編號--build-number=7。如果您省略 選項, rattler-build會使用 recipe.yaml 檔案中定義的組建編號。
如果您的套件配方取決於來自特定頻道的套件,例如 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
初始化或重新索引頻道
當您使用 rattler-build publish 發佈套件時,如果頻道尚未存在,命令會自動初始化頻道。在大多數情況下,您不需要手動初始化或重新索引頻道。
在下列情況中,您可能需要手動初始化或重新索引頻道:
-
您想要在發佈任何套件之前建立空白頻道,例如,確認您的截止日期雲端佇列環境可以連線至頻道。
-
您已使用 Amazon S3 工具直接上傳或刪除
.conda檔案,而不是使用rattler-build publish,且頻道索引已過期。
初始化空白頻道
若要初始化空白頻道,請建立 repodata.json 檔案,並將其上傳至頻道字首的noarch子目錄。將 amzn-s3-demo-bucket 取代為您的儲存貯體名稱。
echo '{"info":{"subdir":"noarch"},"packages":{},"packages.conda":{},"removed":[],"repodata_version":1}' > empty_channel_repodata.json aws s3api put-object --body empty_channel_repodata.json --key Conda/Default/noarch/repodata.json --bucketamzn-s3-demo-bucket
/Conda/Default 字首必須符合佇列環境使用的頻道字首。初始化頻道之後,您可以使用 將套件發佈至頻道rattler-build publish。
為頻道重新編製索引
如果頻道索引已過期,請使用 從頻道中的套件檔案rattler-index重建索引。首先,安裝 rattler-index。
pixi global install rattler-index
然後重新索引頻道。將 amzn-s3-demo-bucket 取代為您的儲存貯體名稱。
rattler-index s3 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 --versionpixi run命令會啟用專案目錄的 conda 環境,並在其中執行指定的命令。環境會保留在專案目錄中,因此您可以從其他終端機使用相同的 pixi run命令。
從頻道移除套件
避免從用於生產的頻道中移除套件,因為 lockfiles 會依雜湊參考特定套件。移除套件可防止從這些 lockfile 重新建立環境。對於開發和測試通道,您可以從儲存貯體中刪除.conda檔案,然後重新索引通道,以移除特定套件。
刪除套件檔案,然後重新索引頻道。將 amzn-s3-demo-bucket 取代為您的儲存貯體名稱。
aws s3 rm s3://amzn-s3-demo-bucket/Conda/Default/linux-64/blender-4.5.0-hb0f4dca_1.conda
刪除檔案後,請重新索引頻道以更新頻道中繼資料。如需說明,請參閱為頻道重新編製索引。
套件檔案存放在平台特定的子目錄中linux-64,例如 win-64、 或 osx-arm64。若要列出子目錄中的套件,請執行下列命令。
aws s3 ls s3://amzn-s3-demo-bucket/Conda/Default/linux-64/
清除
測試後,移除測試專案目錄。
清除測試資源
-
移除測試專案目錄。
在 Linux和 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 命令會為執行命令之工作站的作業系統建置套件。如果您的截止日期雲端機群使用與工作站不同的作業系統,或者您的套件有其他主機需求,則您有下列選項:
後續步驟
將套件發佈至 Amazon S3 Conda 頻道後,請將截止日期雲端佇列設定為使用該頻道:
-
設定自訂 conda 套件的生產佇列許可 – 授予生產佇列對 Amazon S3 conda 頻道的唯讀存取權。
-
將 conda 頻道新增至佇列環境 – 設定佇列環境以從 Amazon S3 conda 頻道安裝套件。