View a markdown version of this page

In che modo Deadline Cloud carica i file su Amazon S3 - Deadline Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

In che modo Deadline Cloud carica i file su Amazon S3

Questo esempio mostra come Deadline Cloud carica i file dalla tua workstation o dal worker host su Amazon S3 in modo che possano essere condivisi. Utilizza un pacchetto di lavoro di esempio dal repository deadline-cloud-samples sul sito Web e l'interfaccia a riga di comando di Deadline Cloud sul GitHub sito Web PyPI per inviare i lavori.

Inizia clonando il repository deadline-cloud-samples nel tuo ambiente, quindi copia il job bundle nella tua home directory: AWS CloudShell job_attachments_devguide

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

Installa la CLI di Deadline Cloud per inviare pacchetti di lavoro:

pip install deadline --upgrade

Il job_attachments_devguide job bundle prevede un solo passaggio con un'attività che esegue uno script di shell bash la cui posizione del file system viene passata come parametro di lavoro. La definizione del parametro job è:

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

Il IN valore della dataFlow proprietà indica a Job Attachments che il valore del ScriptFile parametro è un input per il job. Il valore della default proprietà è una posizione relativa alla directory del job bundle, ma può anche essere un percorso assoluto. Questa definizione di parametro dichiara il script.sh file nella directory del job bundle come file di input necessario per l'esecuzione del job.

Quindi, assicurati che la CLI di Deadline Cloud non abbia un profilo di archiviazione configurato, quindi invia il lavoro in coda: 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/

L'output della CLI di Deadline Cloud dopo l'esecuzione di questo comando è il seguente:

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

Quando invii il lavoro, Deadline Cloud esegue prima l'hashing del script.sh file e poi lo carica su Amazon S3.

Deadline Cloud considera il bucket S3 come uno storage indirizzabile ai contenuti. I file vengono caricati su oggetti S3. Il nome dell'oggetto è derivato da un hash del contenuto del file. Se due file hanno contenuti identici, hanno lo stesso valore hash indipendentemente da dove si trovano i file o da come sono denominati. Questo spazio di archiviazione indirizzabile ai contenuti consente a Deadline Cloud di evitare di caricare un file se è già disponibile.

Puoi utilizzare l'interfaccia a riga di comando di AWS per visualizzare gli oggetti caricati su 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

Due oggetti sono stati caricati su S3:

  • DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128— Il contenuto di. script.sh Il valore 87cb19095dd5d78fcaf56384ef0e6241 nella chiave oggetto è l'hash del contenuto del file e l'estensione xxh128 indica che il valore hash è stato calcolato come hash a 128 bit utilizzando l'algoritmo xxHash sul sito Web xxHash.

  • DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input— L'oggetto manifesto per l'invio del lavoro. I valori <farm-id><queue-id>, e <guid> sono l'identificatore della fattoria, l'identificatore della coda e un valore esidecimale casuale. Il valore a1d221c7fd97b08175b3872a37428e8c in questo esempio è un valore hash calcolato dalla stringa, la directory in cui si trova. /home/cloudshell-user/job_attachments_devguide script.sh

L'oggetto manifest contiene le informazioni per i file di input su uno specifico percorso principale caricato su S3 come parte dell'invio del lavoro. Scarica questo file manifest ()aws s3 cp s3://$Q1_S3_BUCKET/<objectname>. Il suo contenuto è simile a:

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

Ciò indica che il file script.sh è stato caricato e l'hash del contenuto di quel file è87cb19095dd5d78fcaf56384ef0e6241. Questo valore hash corrisponde al valore nel nome dell'oggetto. DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128 Viene utilizzato da Deadline Cloud per sapere quale oggetto scaricare per il contenuto di questo file.

Per lo schema completo del file manifest, consulta il repository deadline-cloud-job-attachments sul sito web. GitHub

Quando si utilizza l'CreateJob operazione, è possibile impostare la posizione degli oggetti del manifesto. È possibile utilizzare l'GetJoboperazione per visualizzare la posizione:

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