

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 carga Deadline Cloud los archivos a Amazon S3
<a name="what-job-attachments-uploads-to-amazon-s3"></a>

En este ejemplo, se muestra cómo Deadline Cloud carga archivos desde su estación de trabajo o host de trabajo a Amazon S3 para poder compartirlos. Utiliza un paquete de trabajos de muestra GitHub y la CLI de Deadline Cloud para enviar los trabajos.

 Comience por clonar el [ GitHubrepositorio de muestras de Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples) en su [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)entorno y, a continuación, copie el paquete de `job_attachments_devguide` trabajos en su directorio principal: 

```
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](https://pypi.org/project/deadline/) para enviar paquetes de trabajos: 

```
pip install deadline --upgrade
```

 El paquete de `job_attachments_devguide` tareas consta de un solo paso con una tarea que ejecuta un script de shell en bash cuya ubicación en el sistema de archivos se transmite 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 tareas, 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 cola`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/
```

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

```
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 crea 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 el mismo contenido, tienen el mismo valor hash independientemente de dónde estén ubicados los archivos o de su nombre. Este almacenamiento de contenido direccionable permite a Deadline Cloud evitar cargar un archivo si ya está disponible.

 Puede usar la [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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 en S3: 
+  `DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128`— El contenido de`script.sh`. El valor `87cb19095dd5d78fcaf56384ef0e6241` de la clave del objeto es el hash del contenido del archivo y la extensión `xxh128` indica que el valor hash se calculó como un [xxhash](https://xxhash.com/) de 128 bits. 
+  `DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input`— El objeto del manifiesto para el envío del trabajo. Los valores `<farm-id>` y `<guid>` son el identificador de la granja, el identificador de la cola y un valor hexadecimal aleatorio. `<queue-id>` 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 encuentra`script.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 de: 

```
{
    "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 ha cargado y el hash del contenido de ese archivo lo es`87cb19095dd5d78fcaf56384ef0e6241`. Este valor hash coincide con el valor del nombre del objeto`DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128`. Deadline Cloud lo utiliza para saber qué objeto descargar para el contenido de este archivo.

 El esquema completo de este archivo está [disponible en GitHub](https://github.com/aws-deadline/deadline-cloud/blob/mainline/src/deadline/job_attachments/asset_manifests/v2023_03_03/validate.py). 

Al utilizar la [CreateJob operación](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateJob.html), puede establecer la ubicación de los objetos del manifiesto. Puedes usar la [GetJoboperación](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetJob.html) 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"
            }
        ]
    },
    ...
}
```