View a markdown version of this page

Publicar paquetes en un canal conda de Amazon S3 - Deadline Cloud

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.

Publicar paquetes en un canal conda de Amazon S3

Puede publicar los paquetes de conda en un bucket de Amazon Simple Storage Service (Amazon S3) para que los trabajadores de AWS Deadline Cloud (Deadline Cloud) puedan instalarlos para los trabajos en ejecución. El rattler-build publish comando funciona con Amazon S3 del mismo modo 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 sube el paquete al bucket 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 usa tu AWS configuración como cualquier otra herramienta. AWS Para obtener más información sobre la configuración de las credenciales, consulte la sección Configuración y ajustes del archivo de credenciales en la Guía del usuario de AWS Command Line Interface (AWS CLI).

Requisitos previos

Antes de publicar paquetes en Amazon S3, complete los siguientes requisitos previos:

  • pixi y rattler-build: instale pixi desde pixi.sh en el sitio web de Pixi y, a continuación, instálelo. rattler-build

    pixi global install rattler-build
  • git — Necesario para clonar el repositorio de muestras. OnWindows, git for Windows on del sitio web de Git para Windows también incluye una bash consola, que es necesaria en algunas de las recetas de Windows ejemplo.

  • Cubeta de Amazon S3: una cubeta de Amazon S3 para usar como canal conda. Puede usar el bucket de archivos adjuntos de trabajo de su granja de Deadline Cloud o crear un bucket 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 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 (de IAM) que solo conceda los siguientes permisos en el bucket de Amazon S3 y en 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 de Amazon S3

rattler-build publishUtilícelo con un s3:// objetivo 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.

En el siguiente ejemplo, se publica la receta de ejemplo Blender 4.5 del repositorio deadline-cloud-samples del sitio web. GitHub Puedes sustituirla por una receta diferente del repositorio de muestras o usar tu propia receta.

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 salida de compilación. Asegúrese de usar un disco con suficiente espacio disponible para la salida de compilación del paquete.

Para publicar un paquete en un canal de Amazon S3
  1. Clona el repositorio de muestras de Deadline Cloud.

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git
  2. Cambie al directorio de conda_recipes.

    cd deadline-cloud-samples/conda_recipes
  3. 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 bucket. Puedes usar un prefijo diferente, pero el prefijo debe ser coherente en todos los comandos y configuraciones de cola que hagan 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. Compila siempre con un nuevo número de compilación si, de lo contrario, el paquete tendría el mismo nombre de archivo. Con el uso se --build-number=+1 consigue creando un canal de producción o un canal de ensayo 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 omites la opción, rattler-build usa el número de compilación definido en el recipe.yaml archivo.

Si la receta de su paquete depende de los paquetes de un canal en particular, como conda-forge en el sitio web de conda-forge, añádala al comando. -c conda-forge

También puedes publicar un archivo de paquete que ya hayas 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 volver a indexar un canal

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

Es posible que tengas que inicializar o volver a indexar 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 se puede conectar al canal.

  • Has subido o eliminado .conda archivos directamente con las herramientas de Amazon S3 en lugar de rattler-build publish usarlas, y el índice de canales está desactualizado.

Inicializar un canal vacío

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 de canal que usa tu entorno de cola. Tras inicializar el canal, puede publicar paquetes en el canal utilizando. rattler-build publish

Reindexar un canal

Si el índice del canal está desactualizado, utilícelo rattler-index para reconstruir el índice a partir de los archivos del paquete del canal. En primer lugar, instálelorattler-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

Después de publicar el paquete, crea un proyecto pixi temporal para verificar 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
  2. Añada el paquete al proyecto.

    pixi add blender=4.5
  3. Compruebe que el paquete funciona correctamente.

    pixi run blender --version

    El pixi run comando activa el entorno de conda para el directorio del proyecto y ejecuta el comando especificado dentro de él. El entorno permanece en el directorio del proyecto, por lo que puede usar el mismo pixi run comando desde otros terminales. Para obtener más información, consulta el pixi run comando en el sitio web de Pixi.

Eliminar paquetes del canal

Evita eliminar paquetes de los canales que utilizas para la producción, ya que los archivos de bloqueo hacen referencia a paquetes específicos mediante un hash. Al eliminar un paquete, se evita 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 eliminando el .conda archivo del bucket y, a continuación, volviendo a indexar el canal.

Elimina el archivo del paquete y, a continuación, vuelve 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, consulta Cómo volver a indexar un canal.

Los archivos de paquetes se almacenan en subdirectorios específicos de la plataforma, como, o. linux-64 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

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

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

    En Linux ymacOS, 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

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 la consola 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 Cómo depurar compilaciones en el sitio web prefix.dev.

Creación de paquetes para otras plataformas

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:

  • Ejecute 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 esté ejecutando Linux para crear paquetes para una Linux flota.

  • 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.

  • (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 el Cross-compilation sitio web prefix.dev.

Siguientes pasos

Después de publicar los paquetes en su canal conda de Amazon S3, configure las colas de Deadline Cloud para usar el canal: