View a markdown version of this page

Como o Deadline Cloud faz upload de arquivos para o Amazon S3 - Deadline Cloud

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como o Deadline Cloud faz upload de arquivos para o Amazon S3

Este exemplo mostra como o Deadline Cloud carrega arquivos da sua estação de trabalho ou host de trabalho para o Amazon S3 para que eles possam ser compartilhados. Ele usa um pacote de trabalho de amostra do repositório deadline-cloud-samples no GitHub site e o Deadline Cloud CLI no site do PyPI para enviar trabalhos.

Comece clonando o repositório deadline-cloud-samples em seu AWS CloudShell ambiente e, em seguida, copie o pacote de tarefas em seu diretório inicial: 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 o Deadline Cloud CLI para enviar pacotes de tarefas:

pip install deadline --upgrade

O pacote de job_attachments_devguide tarefas tem uma única etapa com uma tarefa que executa um script bash shell cuja localização do sistema de arquivos é passada como um parâmetro de trabalho. A definição do parâmetro de trabalho é:

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

O IN valor da dataFlow propriedade informa aos anexos da tarefa que o valor do ScriptFile parâmetro é uma entrada para a tarefa. O valor da default propriedade é um local relativo ao diretório do pacote de tarefas, mas também pode ser um caminho absoluto. Essa definição de parâmetro declara o script.sh arquivo no diretório do pacote de tarefas como um arquivo de entrada necessário para a execução da tarefa.

Em seguida, certifique-se de que o Deadline Cloud CLI não tenha um perfil de armazenamento configurado e envie o trabalho para a filaQ1:

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

A saída do Deadline Cloud CLI após a execução desse comando é semelhante a:

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 você envia o trabalho, o Deadline Cloud primeiro faz o hash do script.sh arquivo e depois o carrega no Amazon S3.

O Deadline Cloud trata o bucket do S3 como armazenamento endereçável ao conteúdo. Os arquivos são enviados para objetos do S3. O nome do objeto é derivado de um hash do conteúdo do arquivo. Se dois arquivos tiverem conteúdo idêntico, eles terão o mesmo valor de hash, independentemente de onde os arquivos estejam localizados ou do nome deles. Esse armazenamento endereçável ao conteúdo permite que o Deadline Cloud evite o upload de um arquivo se ele já estiver disponível.

Você pode usar a AWS CLI para ver os objetos que foram enviados para o 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

Dois objetos foram enviados para o S3:

  • DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128— O conteúdo doscript.sh. O valor 87cb19095dd5d78fcaf56384ef0e6241 na chave do objeto é o hash do conteúdo do arquivo, e a extensão xxh128 indica que o valor do hash foi calculado como um hash de 128 bits usando o algoritmo xxHash no site xxHash.

  • DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input— O objeto manifesto para o envio do trabalho. Os valores <farm-id><queue-id>, e <guid> são seu identificador de fazenda, identificador de fila e um valor hexidecimal aleatório. O valor a1d221c7fd97b08175b3872a37428e8c neste exemplo é um valor de hash calculado a partir da string/home/cloudshell-user/job_attachments_devguide, o diretório em que script.sh está localizado.

O objeto manifesto contém as informações dos arquivos de entrada em um caminho raiz específico carregado para o S3 como parte do envio do trabalho. Baixe esse arquivo de manifesto (aws s3 cp s3://$Q1_S3_BUCKET/<objectname>). Seu conteúdo é semelhante a:

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

Isso indica que o arquivo script.sh foi carregado e o hash do conteúdo desse arquivo é87cb19095dd5d78fcaf56384ef0e6241. Esse valor de hash corresponde ao valor no nome DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128 do objeto. Ele é usado pelo Deadline Cloud para saber qual objeto baixar para o conteúdo desse arquivo.

Para ver o esquema completo do arquivo de manifesto, consulte o repositório deadline-cloud-job-attachments no site. GitHub

Ao usar a CreateJob operação, você pode definir a localização dos objetos do manifesto. Você pode usar a GetJob operação para ver a localização:

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