View a markdown version of this page

Comment Deadline Cloud télécharge des fichiers sur Amazon S3 - Deadline Cloud

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.

Comment Deadline Cloud télécharge des fichiers sur Amazon S3

Cet exemple montre comment Deadline Cloud télécharge des fichiers depuis votre poste de travail ou votre serveur de travail vers Amazon S3 afin qu'ils puissent être partagés. Il utilise un exemple de bundle de tâches provenant du référentiel deadline-cloud-samples sur le GitHub site Web et de la CLI Deadline Cloud sur le site Web PyPI pour soumettre des tâches.

Commencez par cloner le référentiel deadline-cloud-samples dans votre AWS CloudShell environnement, puis copiez le job_attachments_devguide job bundle dans votre répertoire personnel :

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

Installez l'interface de ligne de commande Deadline Cloud pour soumettre des offres d'emploi :

pip install deadline --upgrade

Le job_attachments_devguide job bundle comporte une seule étape avec une tâche qui exécute un script bash shell dont l'emplacement du système de fichiers est transmis en tant que paramètre de tâche. La définition du paramètre de tâche est la suivante :

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

La IN valeur de la dataFlow propriété indique aux pièces jointes à la tâche que la valeur du ScriptFile paramètre est une entrée de la tâche. La valeur de la default propriété est un emplacement relatif par rapport au répertoire du bundle de tâches, mais il peut également s'agir d'un chemin absolu. Cette définition de paramètre déclare le script.sh fichier dans le répertoire du bundle de tâches en tant que fichier d'entrée requis pour l'exécution de la tâche.

Ensuite, assurez-vous qu'aucun profil de stockage n'est configuré pour la CLI Deadline Cloud, puis soumettez la tâche à la file d'attente Q1 :

# 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/

Le résultat de l'interface de ligne de commande Deadline Cloud après l'exécution de cette commande est le suivant :

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

Lorsque vous soumettez la tâche, Deadline Cloud commence par hacher le script.sh fichier, puis le télécharge sur Amazon S3.

Deadline Cloud considère le compartiment S3 comme un espace de stockage dont le contenu peut être adressé. Les fichiers sont chargés vers des objets S3. Le nom de l'objet est dérivé d'un hachage du contenu du fichier. Si deux fichiers ont un contenu identique, ils ont la même valeur de hachage, quel que soit leur emplacement ou leur nom. Ce stockage adressable par contenu permet à Deadline Cloud d'éviter de télécharger un fichier s'il est déjà disponible.

Vous pouvez utiliser l'interface de ligne de commande AWS pour voir les objets qui ont été chargés sur 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

Deux objets ont été chargés sur S3 :

  • DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128— Le contenu descript.sh. La valeur 87cb19095dd5d78fcaf56384ef0e6241 de la clé d'objet est le hachage du contenu du fichier, et l'extension xxh128 indique que la valeur de hachage a été calculée comme un hachage de 128 bits à l'aide de l'algorithme xxHash sur le site Web xxHash.

  • DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input— L'objet manifeste pour la soumission de la tâche. Les valeurs <farm-id><queue-id>, et <guid> sont votre identifiant de ferme, votre identifiant de file d'attente et une valeur hexadécimale aléatoire. La valeur a1d221c7fd97b08175b3872a37428e8c de cet exemple est une valeur de hachage calculée à partir de la chaîne/home/cloudshell-user/job_attachments_devguide, le répertoire dans lequel se script.sh trouve.

L'objet manifeste contient les informations relatives aux fichiers d'entrée d'un chemin racine spécifique chargés vers S3 dans le cadre de la soumission de la tâche. Téléchargez ce fichier manifeste (aws s3 cp s3://$Q1_S3_BUCKET/<objectname>). Son contenu est similaire à :

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

Cela indique que le fichier script.sh a été téléchargé et que le hachage du contenu de ce fichier est87cb19095dd5d78fcaf56384ef0e6241. Cette valeur de hachage correspond à la valeur du nom de l'objetDeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128. Il est utilisé par Deadline Cloud pour savoir quel objet télécharger pour le contenu de ce fichier.

Pour le schéma complet du fichier manifeste, consultez le référentiel deadline-cloud-job-attachments sur le site Web. GitHub

Lorsque vous utilisez cette CreateJob opération, vous pouvez définir l'emplacement des objets du manifeste. Vous pouvez utiliser cette GetJob opération pour voir l'emplacement :

{ "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" } ] }, ... }