

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Publica paquetes en un canal conda de Amazon S3
<a name="publish-packages-s3-channel"></a>

Puede publicar paquetes conda en un depósito de Amazon Simple Storage Service (Amazon S3) para AWS que los trabajadores de Deadline Cloud (Deadline Cloud) puedan instalarlos para ejecutar tareas. El `rattler-build publish` comando funciona con Amazon S3 de la misma manera que con un canal de sistema de archivos local. El comando puede crear una receta y publicar el resultado, o publicar un archivo de paquete que ya haya creado. En ambos casos, el comando carga el paquete en el depósito e indexa el canal en un solo paso.

El `rattler-build publish` comando se autentica AWS mediante la cadena de credenciales estándar, por lo que utiliza la AWS configuración como cualquier otra herramienta. AWS Para obtener más información sobre la configuración de las credenciales, consulte los [ajustes de configuración y del archivo de credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la Guía del usuario de *AWS Command Line Interface (AWS CLI).*

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

Antes de publicar paquetes en Amazon S3, complete los siguientes requisitos previos:
+ **pixi y rattler-build**[: instale pixi desde pixi.sh y, a continuación, instálelo.](https://pixi.sh) `rattler-build`

  ```
  pixi global install rattler-build
  ```
+ **git**: necesario para clonar el repositorio de muestras. SíWindows, [git for Windows](https://gitforwindows.org/) también proporciona un `bash` intérprete de comandos, que requieren algunas de las recetas de Windows muestra.
+ Depósito de **Amazon S3**: un depósito de Amazon S3 para usar como canal conda. Puedes usar el depósito de adjuntos de tareas de tu granja de Deadline Cloud o crear un depósito independiente.
+ **AWS credenciales**: configure las credenciales en su estación de trabajo mediante el `aws configure` comando o el `aws login` comando. Para obtener más información, consulte [Configuración de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) en la *Guía del usuario de AWS Command Line Interface *.
+ **Permisos de IAM**: (opcional) Para reducir el alcance de los permisos que tienen sus credenciales, puede utilizar una política AWS Identity and Access Management (IAM) que solo conceda los siguientes permisos en el bucket de Amazon S3 y el prefijo de canal que utilice (por ejemplo,): `/Conda/*`
  + `s3:GetObject`
  + `s3:PutObject`
  + `s3:DeleteObject`
  + `s3:ListBucket`
  + `s3:GetBucketLocation`

## Publicar un paquete en un canal Amazon S3
<a name="publish-s3-procedure"></a>

Úselo `rattler-build publish` con un `s3://` destino para publicar un paquete en su canal conda de Amazon S3. Si el canal no existe en el bucket, lo `rattler-build` inicializa automáticamente. Antes de empezar, asegúrese de haber completado los [requisitos previos](#publish-s3-prereqs).

El siguiente ejemplo publica la receta de muestras Blender 4.5 del repositorio de [muestras de Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples) enGitHub. Puedes sustituirla por una receta diferente del repositorio de muestras o usar la tuya propia.

**nota**  
Las aplicaciones de gran tamaño pueden requerir decenas de GB de espacio libre en disco para el archivo fuente, los archivos extraídos y la generación de resultados. Asegúrese de utilizar un disco con suficiente espacio disponible para el resultado de la compilación del paquete.

**Para publicar un paquete en un canal Amazon S3**

1. Clona el repositorio de muestras de Deadline Cloud.

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

1. Cambie al directorio de `conda_recipes`.

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

1. Ejecute el comando siguiente. Reemplace {{amzn-s3-demo-bucket}} con el nombre del bucket.

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

   El `/Conda/Default` prefijo organiza el canal dentro del depósito. Puedes usar un prefijo diferente, pero el prefijo debe ser coherente en todos los comandos y configuraciones de cola que hacen referencia al canal.

**Acerca de los números de compilación**  
La `--build-number=+1` opción selecciona automáticamente el siguiente número de compilación en función de lo que ya existe en el canal de destino. La mejor práctica es no sobrescribir nunca un paquete en un canal. Cree siempre con un número de compilación nuevo si, de lo contrario, el paquete tendría el mismo nombre de archivo. Esto se `--build-number=+1` consigue al crear un canal de producción o un canal provisional que refleje la producción.  
Si quieres controlar el número de compilación directamente, puedes configurarlo con un valor específico, como`--build-number=7`. Si omite la opción, `rattler-build` utiliza el número de compilación definido en el `recipe.yaml` archivo.

Si la receta de su paquete depende de paquetes de un canal en particular, como [conda-forge](https://conda-forge.org/), añada `-c conda-forge` al comando.

También puede publicar un archivo de paquete que ya haya creado, por ejemplo, un `.conda` archivo de una compilación local. Reemplace {{amzn-s3-demo-bucket}} con el nombre del bucket.

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

## Inicializar o reindexar un canal
<a name="publish-s3-init-reindex"></a>

Cuando se publica un paquete, el comando inicializa el canal automáticamente si el canal aún no existe. `rattler-build publish` En la mayoría de los casos, no es necesario inicializar o reindexar el canal manualmente.

Es posible que tengas que inicializar o reindexar un canal manualmente en las siguientes situaciones:
+ Quieres crear un canal vacío antes de publicar cualquier paquete, por ejemplo, para comprobar que tu entorno de colas de Deadline Cloud puede conectarse al canal.
+ Ha cargado o eliminado `.conda` archivos directamente con las herramientas de Amazon S3 en lugar de `rattler-build publish` utilizarlos y el índice de canales está desactualizado.

### Inicializar un canal vacío
<a name="publish-s3-init-empty"></a>

Para inicializar un canal vacío, cree un `repodata.json` archivo y cárguelo en el `noarch` subdirectorio del prefijo del canal. Reemplace {{amzn-s3-demo-bucket}} con el nombre del 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 --bucket {{amzn-s3-demo-bucket}}
```

El `/Conda/Default` prefijo debe coincidir con el prefijo del canal que utiliza el entorno de colas. Después de inicializar el canal, puede publicar paquetes en el canal utilizando. `rattler-build publish`

### Reindexar un canal
<a name="publish-s3-reindex"></a>

Si el índice del canal está desactualizado, utilícelo `rattler-index` para reconstruir el índice a partir de los archivos del paquete del canal. Primero, instale`rattler-index`.

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

A continuación, vuelva a indexar el canal. Reemplace {{amzn-s3-demo-bucket}} con el nombre del bucket.

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

## Probando el paquete
<a name="publish-s3-test"></a>

Tras publicar el paquete, cree un proyecto pixi temporal para comprobar que el paquete funciona correctamente. El proyecto instala el paquete desde el canal Amazon S3.

**Para probar el paquete**

1. Cree un directorio de prueba temporal e inicialice un proyecto pixi con el canal Amazon S3. Reemplace {{amzn-s3-demo-bucket}} con el nombre del bucket.

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

1. Añada el paquete al proyecto.

   ```
   pixi add blender=4.5
   ```

1. Compruebe que el paquete funciona correctamente.

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

   El [`pixi run`](https://pixi.sh/latest/reference/cli/pixi/run/)comando activa el entorno conda para el directorio del proyecto y ejecuta el comando especificado en él. El entorno permanece en el directorio del proyecto, por lo que puede utilizar el mismo `pixi run` comando desde otros terminales.

## Eliminar paquetes del canal
<a name="publish-s3-remove-packages"></a>

Evite eliminar paquetes de los canales que utiliza para la producción, ya que los archivos de bloqueo hacen referencia a paquetes específicos mediante un hash. Al eliminar un paquete, se impide volver a crear entornos a partir de esos archivos de bloqueo. En el caso de los canales de desarrollo y prueba, puedes eliminar un paquete específico si eliminas el `.conda` archivo del depósito y, a continuación, vuelves a indexar el canal.

Elimine el archivo del paquete y, a continuación, vuelva a indexar el canal. Reemplace {{amzn-s3-demo-bucket}} con el nombre del bucket.

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

Tras eliminar el archivo, vuelva a indexar el canal para actualizar los metadatos del canal. Para obtener instrucciones, consulte [Reindexación de](#publish-s3-reindex) un canal.

Package files se almacenan en subdirectorios específicos de la plataforma, como`linux-64`, o. `win-64` `osx-arm64` Para enumerar los paquetes de un subdirectorio, ejecute el siguiente comando.

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

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

Tras la prueba, elimine el directorio del proyecto de prueba.

**Para limpiar los recursos de prueba**
+ Elimine el directorio del proyecto de prueba.

  Active Linux y macOS ejecute el siguiente comando.

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

  En Windows (cmd), ejecute el siguiente comando.

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

## Depuración de compilaciones
<a name="publish-s3-debug"></a>

Si una compilación falla, `rattler-build` conserva el directorio de compilación para que puedas investigarlo. Ejecuta el siguiente comando para abrir un shell interactivo en el entorno de compilación con todas las variables de entorno configuradas tal y como estaban durante la compilación.

```
rattler-build debug shell
```

Desde el shell de depuración, puedes modificar archivos, ejecutar comandos de compilación individuales y añadir dependencias para aislar el problema. Para obtener más información, consulta la sección [Depuración de compilaciones](https://rattler-build.prefix.dev/latest/debugging_builds/) en la documentación de rattler-build.

## Creación de paquetes para otras plataformas
<a name="publish-s3-cross-platform"></a>

El `rattler-build publish` comando crea paquetes para el sistema operativo de la estación de trabajo en la que se ejecuta el comando. Si su flota de Deadline Cloud usa un sistema operativo diferente al de su estación de trabajo, o si su paquete tiene otros requisitos de host, tiene las siguientes opciones:
+ Se ejecuta `rattler-build publish` en un host que coincida con el sistema operativo de destino. Por ejemplo, utilice una instancia de Amazon Elastic Compute Cloud (Amazon EC2) que se Linux ejecute para crear paquetes para una flota. Linux
+ Usa una cola de creación de paquetes de Deadline Cloud para automatizar las compilaciones en la plataforma de destino. Consulte [Crear una cola de creación de paquetes](automate-package-builds.md#s3-channel-create-queue).
+ (Avanzado) Utilice la compilación cruzada para crear paquetes para una plataforma diferente a la de su estación de trabajo. Para obtener más información, consulte [Compilación cruzada](https://rattler-build.prefix.dev/latest/compilers/#cross-compilation) en la documentación de rattler-build.

## Siguientes pasos
<a name="publish-s3-next-steps"></a>

Después de publicar los paquetes en su canal conda de Amazon S3, configure sus colas de Deadline Cloud para usar el canal:
+ [Configure los permisos de las colas de producción para paquetes conda personalizados](configure-jobs-s3-channel.md#s3-channel-configure-permissions): conceda a sus colas de producción acceso de solo lectura al canal conda de Amazon S3.
+ [Añadir un canal conda a un entorno de cola: configure el entorno](configure-jobs-s3-channel.md#s3-channel-add-channel) de cola para instalar paquetes desde el canal conda de Amazon S3.