

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 sube 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 servidor de trabajo a Amazon S3 para que puedan compartirse. Utiliza un paquete de trabajos de muestra del repositorio [https://github.com/aws-deadline/deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples) deadline-cloud-samples del GitHub sitio web y la CLI de [ Deadline Cloud del sitio web de PyPI para ](https://pypi.org/project/deadline/) enviar los trabajos.

 Comience por clonar el repositorio 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 trabajos en su directorio principal: `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 la CLI de Deadline Cloud para enviar paquetes de trabajos: 

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

 El paquete de `job_attachments_devguide` trabajos consta de un solo paso con una tarea que ejecuta un script de shell de bash cuya ubicación en el sistema de archivos se indica 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 trabajos, 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 es el siguiente: 

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

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

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

 Para ver el esquema completo del archivo de manifiesto, consulta el repositorio [ deadline-cloud-job-attachments en el sitio web. ](https://github.com/aws-deadline/deadline-cloud-job-attachments/blob/mainline/src/deadline/job_attachments/asset_manifests/v2023_03_03/validate.py) GitHub 

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