

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Publier des packages sur un canal conda Amazon S3
<a name="publish-packages-s3-channel"></a>

Vous pouvez publier des packages conda dans un bucket Amazon Simple Storage Service (Amazon S3) afin AWS que les employés de Deadline Cloud (Deadline Cloud) puissent les installer pour exécuter des tâches. La `rattler-build publish` commande fonctionne avec Amazon S3 de la même manière qu'avec un canal de système de fichiers local. La commande peut créer une recette et publier le résultat, ou publier un fichier de package que vous avez déjà créé. Dans les deux cas, la commande télécharge le package dans le bucket et indexe le canal en une seule étape.

La `rattler-build publish` commande s'authentifie à AWS l'aide de la chaîne d'identification standard. Elle utilise donc votre AWS configuration comme n'importe quel AWS outil. Pour plus d'informations sur la configuration des informations d'identification, consultez [la section Configuration et paramètres du fichier d'informations d'identification](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) dans le *guide de l'utilisateur AWS Command Line Interface (AWS CLI)*.

## Conditions préalables
<a name="publish-s3-prereqs"></a>

Avant de publier des packages sur Amazon S3, remplissez les conditions préalables suivantes :
+ **pixi et rattler-build** [— Installez pixi depuis pixi.sh, puis installez-le.](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git** — Nécessaire pour cloner le dépôt d'échantillons. WindowsActivé, [git for](https://gitforwindows.org/) fournit Windows également un `bash` shell, ce dont certains Windows exemples de recettes ont besoin.
+ Compartiment **Amazon S3** : compartiment Amazon S3 à utiliser comme canal conda. Vous pouvez utiliser le compartiment des pièces jointes à des tâches de votre ferme Deadline Cloud ou créer un compartiment distinct.
+ **AWS informations d'identification** — Configurez les informations d'identification sur votre poste de travail à l'aide de la `aws configure` commande ou de la `aws login` commande. Pour plus d'informations, consultez [Configuration de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) dans le *Guide de l'utilisateur AWS Command Line Interface *.
+ **Autorisations IAM** — (Facultatif) Pour réduire l'étendue des autorisations dont disposent vos informations d'identification, vous pouvez utiliser une politique Gestion des identités et des accès AWS (IAM) qui n'accorde que les autorisations suivantes sur le compartiment Amazon S3 et le préfixe de canal que vous utilisez (par exemple,) : `/Conda/*`
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Publication d'un package sur un canal Amazon S3
<a name="publish-s3-procedure"></a>

À utiliser `rattler-build publish` avec une `s3://` cible pour publier un package sur votre canal conda Amazon S3. Si le canal n'existe pas dans le compartiment, `rattler-build` initialise le canal automatiquement. Avant de commencer, assurez-vous d'avoir rempli les [prérequis](#publish-s3-prereqs).

L'exemple suivant publie l'exemple de recette Blender 4.5 à partir du référentiel d'[échantillons de Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples) surGitHub. Vous pouvez remplacer une recette différente depuis le référentiel d'échantillons ou utiliser votre propre recette.

**Note**  
Les applications volumineuses peuvent nécessiter des dizaines de Go d'espace disque libre pour l'archive source, les fichiers extraits et la sortie de compilation. Assurez-vous d'utiliser un disque avec suffisamment d'espace disponible pour la sortie de génération du package.

**Pour publier un package sur un canal Amazon S3**

1. Clonez le référentiel d'échantillons de Deadline Cloud.

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

1. Passez au répertoire `conda_recipes`.

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

1. Exécutez la commande suivante. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

   Le `/Conda/Default` préfixe organise le canal au sein du bucket. Vous pouvez utiliser un préfixe différent, mais celui-ci doit être cohérent dans toutes les commandes et configurations de file d'attente qui font référence au canal.

**À propos des numéros de version**  
L'`--build-number=+1`option sélectionne automatiquement le numéro de version suivant en fonction de ce qui existe déjà dans le canal de destination. La meilleure pratique consiste à ne jamais remplacer un package dans une chaîne. Créez toujours avec un nouveau numéro de version si le package aurait autrement le même nom de fichier. L'utilisation `--build-number=+1` permet d'atteindre cet objectif lorsque vous créez une chaîne de production ou une chaîne intermédiaire qui reflète la production.  
Si vous souhaitez contrôler directement le numéro de version, vous pouvez le définir avec une valeur spécifique telle que`--build-number=7`. Si vous omettez cette option, `rattler-build` utilise le numéro de version défini dans le `recipe.yaml` fichier.

Si la recette de votre package dépend de packages provenant d'un canal particulier, tel que [conda-forge](https://conda-forge.org/), ajoutez-le `-c conda-forge` à la commande.

Vous pouvez également publier un fichier de package que vous avez déjà créé, par exemple un `.conda` fichier issu d'une version locale. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

## Initialisation ou réindexation d'un canal
<a name="publish-s3-init-reindex"></a>

Lorsque vous `rattler-build publish` publiez un package, la commande initialise automatiquement le canal s'il n'existe pas déjà. Dans la plupart des cas, il n'est pas nécessaire d'initialiser ou de réindexer le canal manuellement.

Vous devrez peut-être initialiser ou réindexer manuellement un canal dans les situations suivantes :
+ Vous souhaitez créer un canal vide avant de publier des packages, par exemple, pour vérifier que votre environnement de file d'attente Deadline Cloud peut se connecter au canal.
+ Vous avez chargé ou supprimé `.conda` des fichiers directement avec les outils Amazon S3 au lieu de les utiliser`rattler-build publish`, et l'index des chaînes est obsolète.

### Initialisation d'un canal vide
<a name="publish-s3-init-empty"></a>

Pour initialiser un canal vide, créez un `repodata.json` fichier et téléchargez-le dans le `noarch` sous-répertoire du préfixe du canal. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

Le `/Conda/Default` préfixe doit correspondre au préfixe de canal utilisé par votre environnement de file d'attente. Après avoir initialisé le canal, vous pouvez publier des packages sur le canal en utilisant`rattler-build publish`.

### Réindexation d'une chaîne
<a name="publish-s3-reindex"></a>

Si l'index du canal est obsolète, utilisez-le `rattler-index` pour le reconstruire à partir des fichiers de package du canal. Tout d'abord, installez`rattler-index`.

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

Réindexez ensuite le canal. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

## Tester le package
<a name="publish-s3-test"></a>

Après avoir publié le package, créez un projet pixi temporaire pour vérifier que le package fonctionne correctement. Le projet installe le package depuis le canal Amazon S3.

**Pour tester le package**

1. Créez un répertoire de test temporaire et initialisez un projet pixi avec le canal Amazon S3. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

1. Ajoutez le package au projet.

   ```
   pixi add blender=4.5
   ```

1. Vérifiez que le package fonctionne correctement.

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

   La [https://pixi.sh/latest/reference/cli/pixi/run/](https://pixi.sh/latest/reference/cli/pixi/run/)commande active l'environnement conda pour le répertoire du projet et exécute la commande spécifiée dans celui-ci. L'environnement est conservé dans le répertoire du projet, vous pouvez donc utiliser la même `pixi run` commande depuis d'autres terminaux.

## Supprimer des packages de la chaîne
<a name="publish-s3-remove-packages"></a>

Évitez de supprimer des packages des canaux que vous utilisez pour la production, car les fichiers de verrouillage font référence à des packages spécifiques par hachage. La suppression d'un package empêche de recréer des environnements à partir de ces fichiers de verrouillage. Pour les canaux de développement et de test, vous pouvez supprimer un package spécifique en supprimant le `.conda` fichier du bucket, puis en réindexant le canal.

Supprimez le fichier du package, puis réindexez le canal. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment.

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

Après avoir supprimé le fichier, réindexez le canal pour mettre à jour les métadonnées du canal. Pour obtenir des instructions, consultez la section [Réindexation d'une chaîne](#publish-s3-reindex).

Les fichiers de package sont stockés dans des sous-répertoires spécifiques à la plate-forme tels `linux-64` que, ou. `win-64` `osx-arm64` Pour répertorier les packages dans un sous-répertoire, exécutez la commande suivante.

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

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

Après le test, supprimez le répertoire du projet de test.

**Pour nettoyer les ressources de test**
+ Supprimez le répertoire du projet de test.

  LinuxActivé macOS et exécutez la commande suivante.

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

  Sur Windows (cmd), exécutez la commande suivante.

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

## Débogage des versions
<a name="publish-s3-debug"></a>

En cas d'échec d'une compilation, `rattler-build` préserve le répertoire de compilation afin que vous puissiez l'examiner. Exécutez la commande suivante pour ouvrir un shell interactif dans l'environnement de construction avec toutes les variables d'environnement configurées telles qu'elles étaient lors de la génération.

```
rattler-build debug shell
```

À partir du shell de débogage, vous pouvez modifier des fichiers, exécuter des commandes de compilation individuelles et ajouter des dépendances pour isoler le problème. Pour plus d'informations, consultez la section [Débogage des versions](https://rattler-build.prefix.dev/latest/debugging_builds/) dans la documentation de Rattler-build.

## Création de packages pour d'autres plateformes
<a name="publish-s3-cross-platform"></a>

La `rattler-build publish` commande crée des packages pour le système d'exploitation du poste de travail sur lequel elle est exécutée. Si votre flotte Deadline Cloud utilise un système d'exploitation différent de celui de votre poste de travail, ou si votre package a d'autres exigences en matière d'hôte, vous disposez des options suivantes :
+ Exécutez `rattler-build publish` sur un hôte correspondant au système d'exploitation cible. Par exemple, utilisez une instance Amazon Elastic Compute Cloud (Amazon EC2) Linux exécutée pour créer des packages pour une flotte. Linux
+ Utilisez une file d'attente de création de packages Deadline Cloud pour automatiser les builds sur la plateforme cible. Voir [Création d'une file d'attente de création de packages](automate-package-builds.md#s3-channel-create-queue).
+ (Avancé) Utilisez la compilation croisée pour créer des packages pour une plate-forme différente de celle de votre poste de travail. Pour plus d'informations, consultez la section [Compilation croisée](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation) dans la documentation de Rattler-build.

## Étapes suivantes
<a name="publish-s3-next-steps"></a>

Après avoir publié des packages sur votre canal Amazon S3 Conda, configurez vos files d'attente Deadline Cloud pour utiliser le canal :
+ [Configurez les autorisations des files d'attente de production pour les packages conda personnalisés](configure-jobs-s3-channel.md#s3-channel-configure-permissions) : accordez à vos files d'attente de production un accès en lecture seule au canal conda Amazon S3.
+ [Ajouter un canal conda à un environnement de file d'attente : configurez l'environnement](configure-jobs-s3-channel.md#s3-channel-add-channel) de file d'attente pour installer des packages à partir du canal conda Amazon S3.