

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
<a name="what-job-attachments-uploads-to-amazon-s3"></a>

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 ](https://pypi.org/project/deadline/)](https://github.com/aws-deadline/deadline-cloud-samples) no site do PyPI para enviar trabalhos.

 Comece clonando o repositório deadline-cloud-samples em seu [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) 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 fila`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/
```

 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 ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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 do`script.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 ](https://xxhash.com/) 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. ](https://github.com/aws-deadline/deadline-cloud-job-attachments/blob/mainline/src/deadline/job_attachments/asset_manifests/v2023_03_03/validate.py) GitHub 

Ao usar a [ CreateJob operação, ](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateJob.html) você pode definir a localização dos objetos do manifesto. Você pode usar a [ GetJob operação ](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetJob.html) 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"
            }
        ]
    },
    ...
}
```