

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Veröffentlichen Sie Pakete in einem Amazon S3 S3-Conda-Kanal
<a name="publish-packages-s3-channel"></a>

Sie können Conda-Pakete in einem Amazon Simple Storage Service (Amazon S3) -Bucket veröffentlichen, sodass AWS Deadline Cloud-Mitarbeiter (Deadline Cloud) sie für die Ausführung von Jobs installieren können. Der `rattler-build publish` Befehl funktioniert mit Amazon S3 genauso wie mit einem lokalen Dateisystemkanal. Der Befehl kann ein Rezept erstellen und das Ergebnis veröffentlichen oder eine Paketdatei veröffentlichen, die Sie bereits erstellt haben. In beiden Fällen lädt der Befehl das Paket in den Bucket hoch und indexiert den Channel in einem Schritt.

Der `rattler-build publish` Befehl authentifiziert sich AWS mithilfe der standardmäßigen Anmeldeinformationskette, sodass er Ihre AWS Konfiguration wie jedes andere Tool verwendet. AWS Weitere Informationen zur Konfiguration von Anmeldeinformationen finden Sie unter [Konfiguration und Einstellungen für Anmeldeinformationsdateien](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) im *AWS Command Line Interface (AWS CLI)* -Benutzerhandbuch.

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

Bevor Sie Pakete in Amazon S3 veröffentlichen, müssen Sie die folgenden Voraussetzungen erfüllen:
+ **pixi and rattler-build** [— Installieren Sie Pixi aus der Datei pixi.sh und installieren Sie es anschließend.](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git** — Erforderlich, um das Beispiel-Repository zu klonen. OnWindows, [git for](https://gitforwindows.org/) bietet Windows auch eine `bash` Shell, die einige der Windows Beispielrezepte benötigen.
+ **Amazon S3 S3-Bucket** — Ein Amazon S3 S3-Bucket, der als Conda-Kanal verwendet werden soll. Sie können den Bucket für Jobanhänge aus Ihrer Deadline Cloud-Farm verwenden oder einen separaten Bucket erstellen.
+ **AWS Anmeldeinformationen** — Konfigurieren Sie die Anmeldeinformationen auf Ihrer Workstation mithilfe des `aws configure` Befehls oder des `aws login` Befehls. Weitere Informationen finden Sie unter [Einrichten von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) im *AWS Command Line Interface -Benutzerhandbuch*.
+ **IAM-Berechtigungen** — (Optional) Um den Umfang der Berechtigungen zu reduzieren, über die Ihre Anmeldeinformationen verfügen, können Sie eine AWS Identity and Access Management (IAM-) Richtlinie verwenden, die nur die folgenden Berechtigungen für den Amazon S3 S3-Bucket und das von Ihnen verwendete Kanalpräfix gewährt (z. B.`/Conda/*`):
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Ein Paket auf einem Amazon S3 S3-Kanal veröffentlichen
<a name="publish-s3-procedure"></a>

Verwenden Sie `rattler-build publish` mit einem `s3://` Ziel, um ein Paket in Ihrem Amazon S3 S3-Conda-Kanal zu veröffentlichen. Wenn der Kanal nicht im Bucket vorhanden ist, wird der Kanal `rattler-build` automatisch initialisiert. [Bevor Sie beginnen, stellen Sie sicher, dass Sie die Voraussetzungen erfüllt haben.](#publish-s3-prereqs)

Im folgenden Beispiel wird das Blender 4.5-Beispielrezept aus dem [Deadline Cloud-Beispiel-Repository](https://github.com/aws-deadline/deadline-cloud-samples) am veröffentlichtGitHub. Sie können ein anderes Rezept aus dem Samples-Repository verwenden oder Ihr eigenes Rezept verwenden.

**Anmerkung**  
Große Anwendungen können Dutzende GB freien Festplattenspeicher für das Quellarchiv, die entpackten Dateien und die Build-Ausgabe benötigen. Stellen Sie sicher, dass Sie eine Festplatte mit ausreichend verfügbarem Speicherplatz für die Paketbauausgabe verwenden.

**Um ein Paket auf einem Amazon S3 S3-Kanal zu veröffentlichen**

1. Klonen Sie das Deadline Cloud-Beispiel-Repository.

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

1. Wechseln Sie in das `conda_recipes`-Verzeichnis.

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

1. Führen Sie den folgenden Befehl aus. {{amzn-s3-demo-bucket}}Ersetzen Sie es durch Ihren Bucket-Namen.

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

   Das `/Conda/Default` Präfix organisiert den Kanal innerhalb des Buckets. Sie können ein anderes Präfix verwenden, aber das Präfix muss in allen Befehlen und Warteschlangenkonfigurationen, die auf den Kanal verweisen, konsistent sein.

**Über Build-Nummern**  
Die `--build-number=+1` Option wählt automatisch die nächste Build-Nummer auf der Grundlage der bereits im Zielkanal vorhandenen Build-Nummer aus. Es hat sich bewährt, ein Paket in einem Channel niemals zu überschreiben. Verwenden Sie immer eine neue Build-Nummer, wenn das Paket andernfalls denselben Dateinamen hätte. Mit `--build-number=+1` Using wird dies erreicht, wenn Sie auf einen Produktionskanal oder einen Staging-Channel aufbauen, der die Produktion widerspiegelt.  
Wenn Sie die Build-Nummer direkt steuern möchten, können Sie ihr einen bestimmten Wert zuweisen, z. B. `--build-number=7` Wenn Sie die Option weglassen, `rattler-build` wird die in der `recipe.yaml` Datei definierte Buildnummer verwendet.

Wenn Ihr Paketrezept von Paketen aus einem bestimmten Channel abhängt, wie z. B. [conda-forge](https://conda-forge.org/), fügen Sie dem Befehl etwas `-c conda-forge` hinzu.

Sie können auch eine Paketdatei veröffentlichen, die Sie bereits erstellt haben, z. B. eine `.conda` Datei aus einem lokalen Build. {{amzn-s3-demo-bucket}}Ersetzen Sie es durch Ihren Bucket-Namen.

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

## Einen Kanal initialisieren oder neu indizieren
<a name="publish-s3-init-reindex"></a>

Wenn Sie `rattler-build publish` ein Paket veröffentlichen, initialisiert der Befehl den Channel automatisch, falls der Channel noch nicht existiert. In den meisten Fällen müssen Sie den Channel nicht manuell initialisieren oder neu indizieren.

In den folgenden Situationen müssen Sie einen Kanal möglicherweise manuell initialisieren oder neu indizieren:
+ Sie möchten vor der Veröffentlichung von Paketen einen leeren Kanal erstellen, um beispielsweise zu überprüfen, ob Ihre Deadline Cloud-Warteschlangenumgebung eine Verbindung zu dem Kanal herstellen kann.
+ Sie haben `.conda` Dateien direkt mit Amazon S3 S3-Tools hochgeladen oder gelöscht`rattler-build publish`, anstatt sie zu verwenden, und der Kanalindex ist veraltet.

### Initialisierung eines leeren Kanals
<a name="publish-s3-init-empty"></a>

Um einen leeren Kanal zu initialisieren, erstellen Sie eine `repodata.json` Datei und laden Sie sie in das `noarch` Unterverzeichnis des Kanalpräfixes hoch. Ersetzen Sie es {{amzn-s3-demo-bucket}} durch Ihren Bucket-Namen.

```
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}}
```

Das `/Conda/Default` Präfix muss mit dem Kanalpräfix übereinstimmen, das Ihre Warteschlangenumgebung verwendet. Nachdem Sie den Channel initialisiert haben, können Sie Pakete im Channel veröffentlichen, indem Sie `rattler-build publish`

### Einen Kanal neu indizieren
<a name="publish-s3-reindex"></a>

Wenn der Kanalindex veraltet ist, verwenden Sie ihn, `rattler-index` um den Index anhand der Paketdateien im Kanal neu zu erstellen. Installieren Sie zuerst`rattler-index`.

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

Dann indizieren Sie den Kanal erneut. Ersetzen Sie ihn {{amzn-s3-demo-bucket}} durch Ihren Bucket-Namen.

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

## Das Paket testen
<a name="publish-s3-test"></a>

Nachdem Sie das Paket veröffentlicht haben, erstellen Sie ein temporäres Pixi-Projekt, um zu überprüfen, ob das Paket ordnungsgemäß funktioniert. Das Projekt installiert das Paket aus dem Amazon S3 S3-Channel.

**Um das Paket zu testen**

1. Erstellen Sie ein temporäres Testverzeichnis und initialisieren Sie ein Pixi-Projekt mit dem Amazon S3 S3-Kanal. Ersetzen Sie es {{amzn-s3-demo-bucket}} durch Ihren Bucket-Namen.

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

1. Fügen Sie das Paket dem Projekt hinzu.

   ```
   pixi add blender=4.5
   ```

1. Stellen Sie sicher, dass das Paket ordnungsgemäß funktioniert.

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

   Der [https://pixi.sh/latest/reference/cli/pixi/run/](https://pixi.sh/latest/reference/cli/pixi/run/)Befehl aktiviert die Conda-Umgebung für das Projektverzeichnis und führt den angegebenen Befehl darin aus. Die Umgebung bleibt im Projektverzeichnis erhalten, sodass Sie denselben `pixi run` Befehl von anderen Terminals aus verwenden können.

## Pakete aus dem Channel entfernen
<a name="publish-s3-remove-packages"></a>

Vermeiden Sie es, Pakete aus Kanälen zu entfernen, die Sie für die Produktion verwenden, da Lockfiles per Hash auf bestimmte Pakete verweisen. Durch das Entfernen eines Pakets wird verhindert, dass Umgebungen anhand dieser Sperrdateien neu erstellt werden. Für Entwicklungs- und Testkanäle können Sie ein bestimmtes Paket entfernen, indem Sie die `.conda` Datei aus dem Bucket löschen und den Channel anschließend neu indizieren.

Löschen Sie die Paketdatei und indizieren Sie den Kanal anschließend erneut. Ersetzen Sie es {{amzn-s3-demo-bucket}} durch Ihren Bucket-Namen.

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

Nachdem Sie die Datei gelöscht haben, indizieren Sie den Kanal erneut, um die Kanal-Metadaten zu aktualisieren. Anweisungen finden Sie unter Einen Kanal [neu indizieren.](#publish-s3-reindex)

Paketdateien werden in plattformspezifischen Unterverzeichnissen wie`linux-64`, `win-64` oder gespeichert. `osx-arm64` Führen Sie den folgenden Befehl aus, um die Pakete in einem Unterverzeichnis aufzulisten.

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

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

Entfernen Sie nach dem Testen das Testprojektverzeichnis.

**Um Testressourcen zu bereinigen**
+ Entfernen Sie das Testprojektverzeichnis.

  Führen Sie macOS unter Linux und den folgenden Befehl aus.

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

  Führen Sie auf Windows (cmd) den folgenden Befehl aus.

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

## Builds debuggen
<a name="publish-s3-debug"></a>

Wenn ein Build fehlschlägt, wird `rattler-build` das Build-Verzeichnis beibehalten, sodass Sie es untersuchen können. Führen Sie den folgenden Befehl aus, um eine interaktive Shell in der Build-Umgebung zu öffnen, in der alle Umgebungsvariablen so eingerichtet sind, wie sie während des Builds waren.

```
rattler-build debug shell
```

In der Debug-Shell können Sie Dateien ändern, einzelne Build-Befehle ausführen und Abhängigkeiten hinzufügen, um das Problem zu isolieren. Weitere Informationen finden Sie unter [Debuggen von Builds in der Rattler-Build-Dokumentation](https://rattler-build.prefix.dev/latest/debugging_builds/).

## Pakete für andere Plattformen erstellen
<a name="publish-s3-cross-platform"></a>

Der `rattler-build publish` Befehl erstellt Pakete für das Betriebssystem der Workstation, auf der der Befehl ausgeführt wird. Wenn Ihre Deadline Cloud-Flotte ein anderes Betriebssystem als Ihre Workstation verwendet oder wenn Ihr Paket andere Hostanforderungen hat, haben Sie die folgenden Optionen:
+ `rattler-build publish`Auf einem Host ausführen, der dem Zielbetriebssystem entspricht. Verwenden Sie beispielsweise eine Amazon Elastic Compute Cloud (Amazon EC2) -Instance, die ausgeführt wirdLinux, um Pakete für eine Linux Flotte zu erstellen.
+ Verwenden Sie eine Deadline Cloud-Warteschlange zur Paketerstellung, um Builds auf der Zielplattform zu automatisieren. Siehe [Eine Warteschlange zur Paketerstellung erstellen](automate-package-builds.md#s3-channel-create-queue).
+ (Fortgeschritten) Verwenden Sie Cross-Compilierung, um Pakete für eine andere Plattform als Ihre Workstation zu erstellen. Weitere Informationen finden Sie unter [Cross-Compilierung](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation) in der Rattler-Build-Dokumentation.

## Nächste Schritte
<a name="publish-s3-next-steps"></a>

Nachdem Sie Pakete in Ihrem Amazon S3 S3-Conda-Kanal veröffentlicht haben, konfigurieren Sie Ihre Deadline Cloud-Warteschlangen so, dass sie den Kanal verwenden:
+ [Konfigurieren Sie Produktionswarteschlangenberechtigungen für benutzerdefinierte Conda-Pakete](configure-jobs-s3-channel.md#s3-channel-configure-permissions) — Gewähren Sie Ihren Produktionswarteschlangen schreibgeschützten Zugriff auf den Amazon S3 S3-Conda-Kanal.
+ [Einen Conda-Kanal zu einer Warteschlangenumgebung hinzufügen — Konfigurieren Sie die Warteschlangenumgebung](configure-jobs-s3-channel.md#s3-channel-add-channel) so, dass Pakete aus dem Amazon S3 S3-Conda-Kanal installiert werden.