

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comment les tâches trouvent-elles les fichiers d'entrée des pièces jointes
<a name="how-jobs-find-job-attachments-input-files"></a>

 Pour qu'une tâche utilise les fichiers que Deadline Cloud télécharge sur Amazon S3 à l'aide de pièces jointes, elle a besoin que ces fichiers soient disponibles via le système de fichiers sur les hôtes de travail. Lorsqu'une [session](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run#sessions) pour votre tâche s'exécute sur un hôte de travail, Deadline Cloud télécharge les fichiers d'entrée de la tâche dans un répertoire temporaire sur le disque local de l'hôte de travail et ajoute des règles de mappage de chemin pour chacun des chemins racines de la tâche vers son emplacement dans le système de fichiers sur le disque local. 

 Pour cet exemple, lancez l'agent de travail Deadline Cloud dans un CloudShell onglet AWS. Laissez toutes les tâches déjà soumises terminer leur exécution, puis supprimez les journaux des tâches du répertoire des journaux : 

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

 Le script suivant modifie le bundle de tâches pour afficher tous les fichiers du répertoire de travail temporaire de la session ainsi que le contenu du fichier de règles de mappage de chemins, puis soumet un job avec le bundle modifié : 

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

 Vous pouvez consulter le journal de l'exécution de la tâche une fois qu'elle a été exécutée par le travailleur dans votre AWS CloudShell environnement : 

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

Le journal indique que la première chose qui se produit au cours de la session est que les deux fichiers d'entrée de la tâche sont téléchargés vers le travailleur : 

```
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.
```

 Vient ensuite le résultat de `script.sh` run by the job : 
+  Les fichiers d'entrée téléchargés lors de la soumission de la tâche se trouvent dans un répertoire dont le nom commence par « assetroot » dans le répertoire temporaire de la session. 
+  Les chemins des fichiers d'entrée ont été déplacés par rapport au répertoire « assetroot » plutôt que par rapport au chemin racine du manifeste d'entrée () de la tâche. `"/"`
+  Le fichier de règles de mappage de chemins contient une règle supplémentaire qui `"/"` correspond au chemin absolu du répertoire « assetroot ». 

 Par exemple : 

```
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 }
```

**Note**  
 Si la tâche que vous soumettez comporte plusieurs manifestes avec des chemins racines différents, il existe un répertoire nommé « assetroot » différent pour chacun des chemins racines. 

 Si vous devez référencer l'emplacement du système de fichiers déplacé de l'un de vos fichiers d'entrée, répertoires ou emplacements de système de fichiers, vous pouvez soit traiter le fichier de règles de mappage de chemins dans votre tâche et effectuer le remappage vous-même, soit ajouter un paramètre de tâche de `PATH` type au modèle de tâche de votre ensemble de tâches et transmettre la valeur que vous devez remapper en tant que valeur de ce paramètre. Par exemple, l'exemple suivant modifie le lot de tâches pour qu'il comporte l'un de ces paramètres de tâche, puis soumet une tâche avec l'emplacement du système de fichiers `/shared/projects/project2` comme valeur : 

```
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
```

 Le fichier journal de l'exécution de cette tâche contient sa sortie : 

```
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}}
```