

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

# 將套件發佈至 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) 使用者指南*》中的[組態和登入資料檔案設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)。

## 先決條件


將套件發佈至 Amazon S3 之前，請先完成下列先決條件：
+ **pixi 和 rattler-build** – 從 [pixi.sh](https://pixi.sh) 安裝 pixi，然後安裝 `rattler-build`。

  ```
  pixi global install rattler-build
  ```
+ **git** – 複製範例儲存庫時需要。在 上Windows，適用於 [的 git Windows](https://gitforwindows.org/) 也提供 `bash` shell，其中一些Windows範例配方需要。
+ **Amazon S3 儲存貯**體 – 用作 conda 頻道的 Amazon S3 儲存貯體。您可以從截止日期雲端陣列使用任務附件儲存貯體，或建立單獨的儲存貯體。
+ **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 頻道


使用 `rattler-build publish`搭配 `s3://`目標，將套件發佈到您的 Amazon S3 Conda 頻道。如果頻道不存在於儲存貯體中， 會自動`rattler-build`初始化頻道。開始之前，請確定您已完成[先決條件](#publish-s3-prereqs)。

下列範例會從 上的截止日期雲端範例儲存庫發佈 Blender4.5 範例配方GitHub。 [https://github.com/aws-deadline/deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples)您可以取代與範例儲存庫不同的配方，或使用您自己的配方。

**將套件發佈至 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和 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
```

## 測試套件


發佈套件後，請建立臨時 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
   ```

## 清除


測試後，移除測試專案目錄。

**清除測試資源**
+ 移除測試專案目錄。

  在 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 文件中的[偵錯](https://rattler-build.prefix.dev/latest/debugging_builds/)組建。

## 為其他平台建置套件


`rattler-build publish` 命令會為執行命令之工作站的作業系統建置套件。如果您的截止日期雲端機群使用與工作站不同的作業系統，或者您的套件有其他主機需求，則您有下列選項：
+ 在符合目標作業系統的主機`rattler-build publish`上執行 。例如，使用執行 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體Linux來建置Linux機群的套件。
+ 使用截止日期雲端套件建置佇列來自動化目標平台上的建置。請參閱[建立套件建置佇列](automate-package-builds.md#s3-channel-create-queue)。
+ （進階） 使用跨編譯為工作站的不同平台建置套件。如需詳細資訊，請參閱 rattler-build 文件中的[跨編譯](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation)。

## 後續步驟


將套件發佈至 Amazon S3 Conda 頻道後，請將截止日期雲端佇列設定為使用該頻道：
+ [設定自訂 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 頻道安裝套件。