

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Publikasikan paket ke saluran conda Amazon S3
<a name="publish-packages-s3-channel"></a>

Anda dapat memublikasikan paket conda ke bucket Amazon Simple Storage Service (Amazon S3) Service S3) sehingga pekerja AWS Deadline Cloud (Deadline Cloud) dapat menginstalnya untuk menjalankan pekerjaan. `rattler-build publish`Perintah ini bekerja dengan Amazon S3 dengan cara yang sama seperti dengan saluran sistem file lokal. Perintah dapat membuat resep dan mempublikasikan hasilnya, atau mempublikasikan file paket yang sudah Anda buat. Dalam kedua kasus tersebut, perintah mengunggah paket ke bucket dan mengindeks saluran dalam satu langkah.

`rattler-build publish`Perintah mengautentikasi dengan AWS menggunakan rantai kredensi standar, sehingga menggunakan AWS konfigurasi Anda seperti alat apa pun AWS . Untuk informasi selengkapnya tentang mengonfigurasi kredensil, lihat [Pengaturan file konfigurasi dan kredensi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) di *AWS Command Line Interface ()AWS CLI* Panduan Pengguna.

## Prasyarat
<a name="publish-s3-prereqs"></a>

Sebelum Anda mempublikasikan paket ke Amazon S3, lengkapi prasyarat berikut:
+ **pixi dan rattler-build** [- Instal pixi dari pixi.sh, lalu instal.](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git** — Diperlukan untuk mengkloning repositori sampel. OnWindows, [git for Windows](https://gitforwindows.org/) juga menyediakan `bash` shell, yang diperlukan oleh beberapa resep Windows sampel.
+ Bucket **Amazon S3 — Bucket** Amazon S3 untuk digunakan sebagai saluran conda. Anda dapat menggunakan bucket lampiran pekerjaan dari Deadline Cloud farm atau membuat bucket terpisah.
+ **AWS credentials** — Konfigurasikan kredensional di workstation Anda menggunakan perintah atau perintah. `aws configure` `aws login` Untuk informasi selengkapnya, lihat [Menyiapkan AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) di *AWS Command Line Interface Panduan Pengguna*.
+ **Izin IAM** — (Opsional) Untuk mengurangi cakupan izin yang dimiliki kredensil, Anda dapat menggunakan kebijakan AWS Identity and Access Management (IAM) yang hanya memberikan izin berikut di bucket Amazon S3 dan awalan saluran yang Anda gunakan (misalnya,): `/Conda/*`
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Menerbitkan paket ke saluran Amazon S3
<a name="publish-s3-procedure"></a>

Gunakan `rattler-build publish` dengan `s3://` target untuk mempublikasikan paket ke saluran conda Amazon S3 Anda. Jika saluran tidak ada di ember, `rattler-build` inisialisasi saluran secara otomatis. Sebelum Anda mulai, pastikan Anda telah menyelesaikan [prasyarat](#publish-s3-prereqs).

Contoh berikut menerbitkan resep sampel Blender 4.5 dari repositori sampel [Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples) pada. GitHub Anda dapat mengganti resep yang berbeda dari repositori sampel atau menggunakan resep Anda sendiri.

**catatan**  
Aplikasi besar dapat memerlukan puluhan GB ruang disk kosong untuk arsip sumber, file yang diekstraksi, dan membangun output. Pastikan Anda menggunakan disk dengan ruang yang cukup untuk output build paket.

**Untuk mempublikasikan paket ke saluran Amazon S3**

1. Kloning repositori sampel Deadline Cloud.

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

1. Ubah ke direktori `conda_recipes`.

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

1. Jalankan perintah berikut. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

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

   `/Conda/Default`Awalan mengatur saluran di dalam ember. Anda dapat menggunakan awalan yang berbeda, tetapi awalan harus konsisten di semua perintah dan konfigurasi antrian yang mereferensikan saluran.

**Tentang nomor build**  
`--build-number=+1`Opsi ini secara otomatis memilih nomor build berikutnya berdasarkan apa yang sudah ada di saluran tujuan. Praktik terbaik adalah tidak pernah menimpa paket di saluran. Selalu buat ke nomor build baru jika paket tersebut memiliki nama file yang sama. Menggunakan `--build-number=+1` mencapai ini ketika Anda membangun ke saluran produksi atau saluran pementasan yang mencerminkan produksi.  
Jika Anda ingin mengontrol nomor build secara langsung, Anda dapat mengaturnya dengan nilai tertentu seperti`--build-number=7`. Jika Anda menghilangkan opsi, `rattler-build` gunakan nomor build yang ditentukan dalam `recipe.yaml` file.

Jika resep paket Anda bergantung pada paket dari saluran tertentu, seperti [conda-forge](https://conda-forge.org/), tambahkan `-c conda-forge` ke perintah.

Anda juga dapat memublikasikan file paket yang sudah Anda buat, misalnya, `.conda` file dari build lokal. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

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

## Menginisialisasi atau mengindeks ulang saluran
<a name="publish-s3-init-reindex"></a>

Saat Anda menggunakan `rattler-build publish` untuk mempublikasikan paket, perintah menginisialisasi saluran secara otomatis jika saluran belum ada. Dalam kebanyakan kasus, Anda tidak perlu menginisialisasi atau mengindeks ulang saluran secara manual.

Anda mungkin perlu menginisialisasi atau mengindeks ulang saluran secara manual dalam situasi berikut:
+ Anda ingin membuat saluran kosong sebelum memublikasikan paket apa pun, misalnya, untuk memverifikasi bahwa lingkungan antrian Deadline Cloud Anda dapat terhubung ke saluran.
+ Anda mengunggah atau menghapus `.conda` file secara langsung dengan alat Amazon S3 alih-alih `rattler-build publish` menggunakan, dan indeks saluran sudah kedaluwarsa.

### Menginisialisasi saluran kosong
<a name="publish-s3-init-empty"></a>

Untuk menginisialisasi saluran kosong, buat `repodata.json` file dan unggah ke `noarch` subdirektori awalan saluran. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

```
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 --bucket {{amzn-s3-demo-bucket}}
```

`/Conda/Default`Awalan harus sesuai dengan awalan saluran yang digunakan lingkungan antrian Anda. Setelah menginisialisasi saluran, Anda dapat mempublikasikan paket ke saluran dengan menggunakan`rattler-build publish`.

### Mengindeks ulang saluran
<a name="publish-s3-reindex"></a>

Jika indeks saluran kedaluwarsa, gunakan `rattler-index` untuk membangun kembali indeks dari file paket di saluran. Pertama, instal`rattler-index`.

```
pixi global install rattler-index
```

Kemudian indeks ulang saluran. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

```
rattler-index s3 s3://amzn-s3-demo-bucket/Conda/Default
```

## Menguji paket
<a name="publish-s3-test"></a>

Setelah Anda mempublikasikan paket, buat proyek pixi sementara untuk memverifikasi bahwa paket berfungsi dengan benar. Proyek ini menginstal paket dari saluran Amazon S3.

**Untuk menguji paket**

1. Buat direktori pengujian sementara dan inisialisasi proyek pixi dengan saluran Amazon S3. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

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

1. Tambahkan paket ke proyek.

   ```
   pixi add blender=4.5
   ```

1. Verifikasi bahwa paket berfungsi dengan benar.

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

   [`pixi run`](https://pixi.sh/latest/reference/cli/pixi/run/)Perintah mengaktifkan lingkungan conda untuk direktori proyek dan menjalankan perintah yang ditentukan di dalamnya. Lingkungan tetap ada di direktori proyek, sehingga Anda dapat menggunakan `pixi run` perintah yang sama dari terminal lain.

## Menghapus paket dari saluran
<a name="publish-s3-remove-packages"></a>

Hindari menghapus paket dari saluran yang Anda gunakan untuk produksi, karena lockfiles mereferensikan paket tertentu dengan hash. Menghapus paket mencegah pembuatan ulang lingkungan dari file kunci tersebut. Untuk saluran pengembangan dan pengujian, Anda dapat menghapus paket tertentu dengan menghapus `.conda` file dari bucket dan kemudian mengindeks ulang saluran.

Hapus file paket dan kemudian indeks ulang saluran. Ganti {{amzn-s3-demo-bucket}} dengan nama bucket Anda.

```
aws s3 rm s3://amzn-s3-demo-bucket/Conda/Default/linux-64/blender-4.5.0-hb0f4dca_1.conda
```

Setelah Anda menghapus file, indeks ulang saluran untuk memperbarui metadata saluran. Untuk petunjuk, lihat [Mengindeks ulang saluran.](#publish-s3-reindex)

File Package disimpan dalam subdirektori khusus platform seperti,, atau. `linux-64` `win-64` `osx-arm64` Untuk daftar paket dalam subdirektori, jalankan perintah berikut.

```
aws s3 ls s3://amzn-s3-demo-bucket/Conda/Default/linux-64/
```

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

Setelah pengujian, hapus direktori proyek uji.

**Untuk membersihkan sumber daya pengujian**
+ Hapus direktori proyek uji.

  LinuxAktif danmacOS, jalankan perintah berikut.

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

  Pada Windows (cmd), jalankan perintah berikut.

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

## Membangun debugging
<a name="publish-s3-debug"></a>

Jika build gagal, `rattler-build` mempertahankan direktori build sehingga Anda dapat menyelidikinya. Jalankan perintah berikut untuk membuka shell interaktif di lingkungan build dengan semua variabel lingkungan diatur sebagaimana adanya selama pembuatan.

```
rattler-build debug shell
```

Dari shell debug, Anda dapat memodifikasi file, menjalankan perintah build individual, dan menambahkan dependensi untuk mengisolasi masalah. Untuk informasi selengkapnya, lihat [Mendebug build](https://rattler-build.prefix.dev/latest/debugging_builds/) di dokumentasi rattler-build.

## Membangun paket untuk platform lain
<a name="publish-s3-cross-platform"></a>

`rattler-build publish`Perintah membangun paket untuk sistem operasi workstation tempat perintah berjalan. Jika armada Deadline Cloud Anda menggunakan sistem operasi yang berbeda dari workstation Anda, atau jika paket Anda memiliki persyaratan host lain, Anda memiliki opsi berikut:
+ Jalankan `rattler-build publish` pada host yang cocok dengan sistem operasi target. Misalnya, gunakan instans Amazon Elastic Compute Cloud (Amazon EC2) yang Linux berjalan untuk membuat paket untuk armada. Linux
+ Gunakan antrian pembuatan paket Deadline Cloud untuk mengotomatiskan build di platform target. Lihat [Membuat antrian pembuatan paket](automate-package-builds.md#s3-channel-create-queue).
+ (Advanced) Gunakan kompilasi silang untuk membangun paket untuk platform yang berbeda dari workstation Anda. Untuk informasi selengkapnya, lihat [Cross-compilation](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation) dalam dokumentasi rattler-build.

## Langkah selanjutnya
<a name="publish-s3-next-steps"></a>

Setelah memublikasikan paket ke saluran conda Amazon S3, konfigurasikan antrian Deadline Cloud Anda untuk menggunakan saluran:
+ [Konfigurasikan izin antrian produksi untuk paket conda kustom](configure-jobs-s3-channel.md#s3-channel-configure-permissions) — Berikan akses hanya-baca antrian produksi Anda ke saluran conda Amazon S3.
+ [Menambahkan saluran conda ke lingkungan antrian — Konfigurasikan lingkungan](configure-jobs-s3-channel.md#s3-channel-add-channel) antrian untuk menginstal paket dari saluran conda Amazon S3.