View a markdown version of this page

Cómo sube Deadline Cloud los archivos a 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.

Cómo sube Deadline Cloud los archivos a Amazon S3

En este ejemplo, se muestra cómo Deadline Cloud carga archivos desde su estación de trabajo o servidor de trabajo a Amazon S3 para que puedan compartirse. Utiliza un paquete de trabajos de muestra del repositorio https://github.com/aws-deadline/deadline-cloud-samples deadline-cloud-samples del GitHub sitio web y la CLI de Deadline Cloud del sitio web de PyPI para enviar los trabajos.

Comience por clonar el repositorio deadline-cloud-samples en su AWS CloudShell entorno y, a continuación, copie el paquete de trabajos en su directorio principal: job_attachments_devguide

git clone https://github.com/aws-deadline/deadline-cloud-samples.git cp -r deadline-cloud-samples/job_bundles/job_attachments_devguide ~/

Instale la CLI de Deadline Cloud para enviar paquetes de trabajos:

pip install deadline --upgrade

El paquete de job_attachments_devguide trabajos consta de un solo paso con una tarea que ejecuta un script de shell de bash cuya ubicación en el sistema de archivos se indica como parámetro del trabajo. La definición del parámetro de trabajo es:

... - name: ScriptFile type: PATH default: script.sh dataFlow: IN objectType: FILE ...

El IN valor de la dataFlow propiedad indica a los adjuntos del trabajo que el valor del ScriptFile parámetro es una entrada para el trabajo. El valor de la default propiedad es una ubicación relativa al directorio del paquete de trabajos, pero también puede ser una ruta absoluta. Esta definición de parámetro declara el script.sh archivo del directorio del paquete de trabajos como un archivo de entrada necesario para que se ejecute el trabajo.

A continuación, asegúrese de que la CLI de Deadline Cloud no tenga un perfil de almacenamiento configurado y, a continuación, envíe el trabajo a la colaQ1:

# Change the value of FARM_ID to your farm's identifier FARM_ID=farm-00112233445566778899aabbccddeeff # Change the value of QUEUE1_ID to queue Q1's identifier QUEUE1_ID=queue-00112233445566778899aabbccddeeff deadline config set settings.storage_profile_id '' deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/

El resultado de la CLI de Deadline Cloud después de ejecutar este comando es el siguiente:

Submitting to Queue: Q1 ... Hashing Attachments [####################################] 100% Hashing Summary: Processed 1 file totaling 39.0 B. Skipped re-processing 0 files totaling 0.0 B. Total processing time of 0.0327 seconds at 1.19 KB/s. Uploading Attachments [####################################] 100% Upload Summary: Processed 1 file totaling 39.0 B. Skipped re-processing 0 files totaling 0.0 B. Total processing time of 0.25639 seconds at 152.0 B/s. Waiting for Job to be created... Submitted job bundle: job_attachments_devguide/ Job creation completed successfully job-74148c13342e4514b63c7a7518657005

Al enviar el trabajo, Deadline Cloud primero realiza un hash del script.sh archivo y, a continuación, lo carga en Amazon S3.

Deadline Cloud trata el depósito de S3 como almacenamiento direccionable por contenido. Los archivos se cargan en objetos de S3. El nombre del objeto se deriva de un hash del contenido del archivo. Si dos archivos tienen un contenido idéntico, tienen el mismo valor hash independientemente de dónde estén ubicados los archivos o de su nombre. Este almacenamiento direccionable por contenido permite a Deadline Cloud evitar cargar un archivo si ya está disponible.

Puede usar la CLI de AWS para ver los objetos que se cargaron en Amazon S3:

# The name of queue `Q1`'s job attachments S3 bucket Q1_S3_BUCKET=$( aws deadline get-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \ --query 'jobAttachmentSettings.s3BucketName' | tr -d '"' ) aws s3 ls s3://$Q1_S3_BUCKET --recursive

Se cargaron dos objetos a S3:

  • DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128— El contenido descript.sh. El valor 87cb19095dd5d78fcaf56384ef0e6241 de la clave de objeto es el hash del contenido del archivo, y la extensión xxh128 indica que el valor hash se calculó como un hash de 128 bits mediante el algoritmo xxHash del sitio web de xxHash.

  • DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input— El objeto de manifiesto para el envío del trabajo. Los valores <farm-id><queue-id>, y <guid> son el identificador de la granja, el identificador de la cola y un valor hexadecimal aleatorio. El valor a1d221c7fd97b08175b3872a37428e8c de este ejemplo es un valor hash calculado a partir de la cadena/home/cloudshell-user/job_attachments_devguide, el directorio en el que se encuentrascript.sh.

El objeto de manifiesto contiene la información de los archivos de entrada de una ruta raíz específica que se cargaron en S3 como parte del envío del trabajo. Descargue este archivo de manifiesto (aws s3 cp s3://$Q1_S3_BUCKET/<objectname>). Su contenido es similar al siguiente:

{ "hashAlg": "xxh128", "manifestVersion": "2023-03-03", "paths": [ { "hash": "87cb19095dd5d78fcaf56384ef0e6241", "mtime": 1721147454416085, "path": "script.sh", "size": 39 } ], "totalSize": 39 }

Esto indica que el archivo script.sh se cargó y el hash del contenido de ese archivo es87cb19095dd5d78fcaf56384ef0e6241. Este valor hash coincide con el valor del nombre del objetoDeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128. Deadline Cloud lo usa para saber qué objeto descargar para el contenido de este archivo.

Para ver el esquema completo del archivo de manifiesto, consulta el repositorio deadline-cloud-job-attachments en el sitio web. GitHub

Cuando usas la CreateJob operación, puedes establecer la ubicación de los objetos del manifiesto. Puedes usar la GetJob operación para ver la ubicación:

{ "attachments": { "file system": "COPIED", "manifests": [ { "inputManifestHash": "5b0db3d311805ea8de7787b64cbbe8b3", "inputManifestPath": "<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input", "rootPath": "/home/cloudshell-user/job_attachments_devguide", "rootPathFormat": "posix" } ] }, ... }