

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 encuentran los trabajos los archivos de entrada adjuntos a los trabajos?
<a name="how-jobs-find-job-attachments-input-files"></a>

 Para que un trabajo utilice los archivos que Deadline Cloud carga en Amazon S3 mediante adjuntos de trabajo, su trabajo necesita esos archivos disponibles a través del sistema de archivos de los hosts de los trabajadores. Cuando una [sesión](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run#sessions) de tu trabajo se ejecuta en el host de un trabajador, Deadline Cloud descarga los archivos de entrada del trabajo en un directorio temporal de la unidad local del anfitrión del trabajador y añade reglas de mapeo de rutas para cada una de las rutas raíz del trabajo a la ubicación del sistema de archivos en la unidad local. 

 Para este ejemplo, inicie el agente de trabajo de Deadline Cloud en una CloudShell pestaña de AWS. Deje que los trabajos enviados anteriormente terminen de ejecutarse y, a continuación, elimine los registros de trabajos del directorio de registros: 

```
rm -rf ~/devdemo-logs/queue-*
```

 El siguiente script modifica el paquete de trabajos para mostrar todos los archivos del directorio de trabajo temporal de la sesión y el contenido del archivo de reglas de mapeo de rutas y, a continuación, envía un trabajo con el paquete modificado: 

```
# 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}}
# Change the value of WSALL_ID to the identifier of the WSAll storage profile
WSALL_ID=sp-{{00112233445566778899aabbccddeeff}}

deadline config set settings.storage_profile_id $WSALL_ID

cat > ~/job_attachments_devguide/script.sh << EOF
#!/bin/bash

echo "Session working directory is: \$(pwd)"
echo
echo "Contents:"
find . -type f
echo
echo "Path mapping rules file: \$1"
jq . \$1
EOF

cat > ~/job_attachments_devguide/template.yaml << EOF
specificationVersion: jobtemplate-2023-09
name: "Job Attachments Explorer"
parameterDefinitions:
- name: ScriptFile
  type: PATH
  default: script.sh
  dataFlow: IN
  objectType: FILE
steps:
- name: Step
  script:
    actions:
      onRun:
        command: /bin/bash
        args:
        - "{{Param.ScriptFile}}"
        - "{{Session.PathMappingRulesFile}}"
EOF

deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/
```

 Puede consultar el registro de la ejecución de la tarea después de que la haya ejecutado el trabajador de su AWS CloudShell entorno: 

```
cat demoenv-logs/queue-*/session*.log
```

El registro muestra que lo primero que ocurre en la sesión es que los dos archivos de entrada del trabajo se descargan al trabajador: 

```
2024-07-17 01:26:37,824 INFO ==============================================
2024-07-17 01:26:37,825 INFO --------- Job Attachments Download for Job
2024-07-17 01:26:37,825 INFO ==============================================
2024-07-17 01:26:37,825 INFO Syncing inputs using Job Attachments
2024-07-17 01:26:38,116 INFO Downloaded 142.0 B / 186.0 B of 2 files (Transfer rate: 0.0 B/s)
2024-07-17 01:26:38,174 INFO Downloaded 186.0 B / 186.0 B of 2 files (Transfer rate: 733.0 B/s)
2024-07-17 01:26:38,176 INFO Summary Statistics for file downloads:
Processed 2 files totaling 186.0 B.
Skipped re-processing 0 files totaling 0.0 B.
Total processing time of 0.09752 seconds at 1.91 KB/s.
```

 El siguiente es el resultado de `script.sh` run by the job: 
+  Los archivos de entrada que se cargaron al enviar el trabajo se encuentran en un directorio cuyo nombre comienza por «assetroot» en el directorio temporal de la sesión. 
+  Las rutas de los archivos de entrada se han reubicado en relación con el directorio «assetroot» en lugar de en relación con la ruta raíz del manifiesto de entrada () del trabajo. `"/"`
+  El archivo de reglas de mapeo de rutas contiene una regla adicional que se reasigna `"/"` a la ruta absoluta del directorio «assetroot». 

 Por ejemplo: 

```
2024-07-17 01:26:38,264 INFO Output:
2024-07-17 01:26:38,267 INFO Session working directory is: /sessions/session-{{5b33f}}
2024-07-17 01:26:38,267 INFO 
2024-07-17 01:26:38,267 INFO Contents:
2024-07-17 01:26:38,269 INFO ./tmp_xdhbsdo.sh
2024-07-17 01:26:38,269 INFO ./tmpdi00052b.json
2024-07-17 01:26:38,269 INFO ./assetroot-{{assetroot-3751a}}/shared/projects/project2/file.txt
2024-07-17 01:26:38,269 INFO ./assetroot-{{assetroot-3751a}}/home/cloudshell-user/job_attachments_devguide/script.sh
2024-07-17 01:26:38,269 INFO 
2024-07-17 01:26:38,270 INFO Path mapping rules file: /sessions/session-{{5b33f}}/tmpdi00052b.json
2024-07-17 01:26:38,282 INFO {
2024-07-17 01:26:38,282 INFO   "version": "pathmapping-1.0",
2024-07-17 01:26:38,282 INFO   "path_mapping_rules": [
2024-07-17 01:26:38,282 INFO     {
2024-07-17 01:26:38,282 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,282 INFO       "source_path": "/shared/projects/project1",
2024-07-17 01:26:38,283 INFO       "destination_path": "/mnt/projects/project1"
2024-07-17 01:26:38,283 INFO     },
2024-07-17 01:26:38,283 INFO     {
2024-07-17 01:26:38,283 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,283 INFO       "source_path": "/shared/common",
2024-07-17 01:26:38,283 INFO       "destination_path": "/mnt/common"
2024-07-17 01:26:38,283 INFO     },
2024-07-17 01:26:38,283 INFO     {
2024-07-17 01:26:38,283 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,283 INFO       "source_path": "/",
2024-07-17 01:26:38,283 INFO       "destination_path": "/sessions/session-{{5b33f}}/assetroot-{{assetroot-3751a}}"
2024-07-17 01:26:38,283 INFO     }
2024-07-17 01:26:38,283 INFO   ]
2024-07-17 01:26:38,283 INFO }
```

**nota**  
 Si el trabajo que envías tiene varios manifiestos con diferentes rutas raíz, habrá un directorio con el nombre «assetroot» diferente para cada una de las rutas raíz. 

 Si necesita hacer referencia a la ubicación del sistema de archivos reubicado de uno de sus archivos de entrada, directorios o ubicaciones del sistema de archivos, puede procesar el archivo de reglas de mapeo de rutas en su trabajo y realizar la reasignación usted mismo, o agregar un parámetro de trabajo de `PATH` tipo a la plantilla de trabajo en su paquete de trabajos y pasar el valor que necesita reasignar como valor de ese parámetro. Por ejemplo, el ejemplo siguiente modifica el paquete de trabajos para que tenga uno de estos parámetros de trabajo y, a continuación, envía un trabajo con la ubicación del sistema de archivos `/shared/projects/project2` como valor: 

```
cat > ~/job_attachments_devguide/template.yaml << EOF
specificationVersion: jobtemplate-2023-09
name: "Job Attachments Explorer"
parameterDefinitions:
- name: LocationToRemap
  type: PATH
steps:
- name: Step
  script:
    actions:
      onRun:
        command: /bin/echo
        args:
        - "The location of {{RawParam.LocationToRemap}} in the session is {{Param.LocationToRemap}}"
EOF

deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/ \
  -p LocationToRemap=/shared/projects/project2
```

 El archivo de registro de la ejecución de este trabajo contiene el resultado: 

```
2024-07-17 01:40:35,283 INFO Output:
2024-07-17 01:40:35,284 INFO The location of /shared/projects/project2 in the session is /sessions/session-{{5b33f}}/assetroot-{{assetroot-3751a}}
```