Étape 3 : Soumettre et exécuter des tâches avec Deadline Cloud - AWS Deadline Cloud

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.

Étape 3 : Soumettre et exécuter des tâches avec Deadline Cloud

Pour utiliser AWS Deadline Cloud pour exécuter des tâches, suivez les procédures suivantes. Utilisez le premier AWS CloudShell onglet pour soumettre des offres d'emploi à votre parc de développeurs. Utilisez le deuxième CloudShell onglet pour afficher la sortie de l'agent de travail.

Soumettre l'simple_jobéchantillon

Après avoir créé une ferme et exécuté l'agent de travail, vous pouvez envoyer l'simple_jobéchantillon à Deadline Cloud.

Pour envoyer l'simple_jobéchantillon à Deadline Cloud
  1. Installez et configurez le AWS Command Line Interface (AWS CLI), si ce n'est pas déjà fait. Pour plus d'informations, voir Installer ou mettre à jour vers la dernière version du AWS CLI.

  2. Téléchargez l'exemple à partir de GitHub.

    cd ~ git clone https://github.com/aws-deadline/deadline-cloud-samples.git
  3. Choisissez votre premier CloudShell onglet, puis accédez au répertoire des exemples de lots de tâches.

    cd ~/deadline-cloud-samples/job_bundles/
  4. Soumettez l'simple_jobéchantillon.

    deadline bundle submit simple_job
  5. Choisissez votre deuxième CloudShell onglet pour afficher les résultats de journalisation concernant les appelsBatchGetJobEntities, l'obtention d'une session et l'exécution d'une action de session.

    ... [2024-03-27 16:00:21,846][INFO ] 🔷 Session.Starting 🔷 [session-053d77cef82648fe2] Starting new Session. [queue-3ba4ff683ff54db09b851a2ed8327d7b/job-d34cc98a6e234b6f82577940ab4f76c6] [2024-03-27 16:00:21,853][INFO ] 📤 API.Req 📤 [deadline:BatchGetJobEntity] resource={'farm-id': 'farm-3e24cfc9bbcd423e9c1b6754bc1', 'fleet-id': 'fleet-246ee60f46d44559b6cce010d05', 'worker-id': 'worker-75e0fce9c3c344a69bff57fcd83'} params={'identifiers': [{'jobDetails': {'jobId': 'job-d34cc98a6e234b6f82577940ab4'}}]} request_url=https://scheduling.deadline.us-west-2.amazonaws.com/2023-10-12/farms/farm-3e24cfc9bbcd423e /fleets/fleet-246ee60f46d44559b1 /workers/worker- 75e0fce9c3c344a69b /batchGetJobEntity [2024-03-27 16:00:22,013][INFO ] 📥 API.Resp 📥 [deadline:BatchGetJobEntity](200) params={'entities': [{'jobDetails': {'jobId': 'job-d34cc98a6e234b6f82577940ab6', 'jobRunAsUser': {'posix': {'user': 'job-user', 'group': 'job-group'}, 'runAs': 'QUEUE_CONFIGURED_USER'}, 'logGroupName': '/aws/deadline/farm-3e24cfc9bbcd423e9c1b6754bc1/queue-3ba4ff683ff54db09b851a2ed83', 'parameters': '*REDACTED*', 'schemaVersion': 'jobtemplate-2023-09'}}], 'errors': []} request_id=a3f55914-6470-439e-89e5-313f0c6 [2024-03-27 16:00:22,013][INFO ] 🔷 Session.Add 🔷 [session-053d77cef82648fea9c69827182] Appended new SessionActions. (ActionIds: ['sessionaction-053d77cef82648fea9c69827182-0']) [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ab6] [2024-03-27 16:00:22,014][WARNING ] 🔷 Session.User 🔷 [session-053d77cef82648fea9c69827182] Running as the Worker Agent's user. (User: cloudshell-user) [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ac6] [2024-03-27 16:00:22,015][WARNING ] 🔷 Session.AWSCreds 🔷 [session-053d77cef82648fea9c69827182] AWS Credentials are not available: Queue has no IAM Role. [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ab6] [2024-03-27 16:00:22,026][INFO ] 🔷 Session.Logs 🔷 [session-053d77cef82648fea9c69827182] Logs streamed to: AWS CloudWatch Logs. (LogDestination: /aws/deadline/farm-3e24cfc9bbcd423e9c1b6754bc1/queue-3ba4ff683ff54db09b851a2ed83/session-053d77cef82648fea9c69827181) [queue-3ba4ff683ff54db09b851a2ed83/job-d34cc98a6e234b6f82577940ab4] [2024-03-27 16:00:22,026][INFO ] 🔷 Session.Logs 🔷 [session-053d77cef82648fea9c69827182] Logs streamed to: local file. (LogDestination: /home/cloudshell-user/demoenv-logs/queue-3ba4ff683ff54db09b851a2ed8b/session-053d77cef82648fea9c69827182.log) [queue-3ba4ff683ff54db09b851a2ed83/job-d34cc98a6e234b6f82577940ab4] ...
    Note

    Seule la sortie de journalisation de l'agent de travail est affichée. Il existe un journal distinct pour la session qui exécute le travail.

  6. Choisissez votre premier onglet, puis inspectez les fichiers journaux écrits par l'agent de travail.

    1. Accédez au répertoire des journaux de l'agent de travail et visualisez son contenu.

      cd ~/demoenv-logs ls
    2. Imprimez le premier fichier journal créé par l'agent de travail.

      cat worker-agent-bootstrap.log

      Ce fichier contient une sortie de l'agent de travail expliquant comment il a appelé l'API Deadline Cloud pour créer une ressource de personnel dans votre flotte, puis a assumé le rôle de flotte.

    3. Imprimez la sortie du fichier journal lorsque l'agent des travailleurs rejoint le parc.

      cat worker-agent.log

      Ce journal contient des résultats sur toutes les actions effectuées par l'agent de travail, mais pas sur les files d'attente à partir desquelles il exécute les tâches, à l'exception des identifiants de ces ressources.

    4. Imprimez les fichiers journaux de chaque session dans un répertoire dont le nom est identique à l'identifiant de la ressource de file d'attente.

      cat $DEV_QUEUE_ID/session-*.log

      En cas de réussite de la tâche, le résultat du fichier journal sera similaire à ce qui suit :

      cat $DEV_QUEUE_ID/$(ls -t $DEV_QUEUE_ID | head -1) 2024-03-27 16:00:22,026 WARNING Session running with no AWS Credentials. 2024-03-27 16:00:22,404 INFO 2024-03-27 16:00:22,405 INFO ============================================== 2024-03-27 16:00:22,405 INFO --------- Running Task 2024-03-27 16:00:22,405 INFO ============================================== 2024-03-27 16:00:22,406 INFO ---------------------------------------------- 2024-03-27 16:00:22,406 INFO Phase: Setup 2024-03-27 16:00:22,406 INFO ---------------------------------------------- 2024-03-27 16:00:22,406 INFO Writing embedded files for Task to disk. 2024-03-27 16:00:22,406 INFO Mapping: Task.File.runScript -> /sessions/session-053d77cef82648fea9c698271812a/embedded_fileswa_gj55_/tmp2u9yqtsz 2024-03-27 16:00:22,406 INFO Wrote: runScript -> /sessions/session-053d77cef82648fea9c698271812a/embedded_fileswa_gj55_/tmp2u9yqtsz 2024-03-27 16:00:22,407 INFO ---------------------------------------------- 2024-03-27 16:00:22,407 INFO Phase: Running action 2024-03-27 16:00:22,407 INFO ---------------------------------------------- 2024-03-27 16:00:22,407 INFO Running command /sessions/session-053d77cef82648fea9c698271812a/tmpzuzxpslm.sh 2024-03-27 16:00:22,414 INFO Command started as pid: 471 2024-03-27 16:00:22,415 INFO Output: 2024-03-27 16:00:22,420 INFO Welcome to AWS Deadline Cloud! 2024-03-27 16:00:22,571 INFO 2024-03-27 16:00:22,572 INFO ============================================== 2024-03-27 16:00:22,572 INFO --------- Session Cleanup 2024-03-27 16:00:22,572 INFO ============================================== 2024-03-27 16:00:22,572 INFO Deleting working directory: /sessions/session-053d77cef82648fea9c698271812a
  7. Imprimez les informations relatives à la tâche.

    deadline job get

    Lorsque vous soumettez la tâche, le système l'enregistre par défaut afin que vous n'ayez pas à saisir l'ID de la tâche.

Soumettre un simple_job avec un paramètre

Vous pouvez soumettre des tâches avec des paramètres. Dans la procédure suivante, vous modifiez le simple_job modèle pour inclure un message personnalisé, vous soumettez le fichier journal de sessionsimple_job, puis vous l'imprimez pour afficher le message.

Pour soumettre l'simple_jobéchantillon avec un paramètre
  1. Sélectionnez votre premier CloudShell onglet, puis accédez au répertoire des exemples de lots de tâches.

    cd ~/deadline-cloud-samples/job_bundles/
  2. Imprimez le contenu du simple_job modèle.

    cat simple_job/template.yaml

    La parameterDefinitions section contenant le Message paramètre doit ressembler à ce qui suit :

    parameterDefinitions: - name: Message type: STRING default: Welcome to AWS Deadline Cloud!
  3. Soumettez l'simple_jobexemple avec une valeur de paramètre, puis attendez que le travail soit terminé.

    deadline bundle submit simple_job \ -p "Message=Greetings from the developer getting started guide."
  4. Pour voir le message personnalisé, consultez le fichier journal de session le plus récent.

    cd ~/demoenv-logs cat $DEV_QUEUE_ID/$(ls -t $DEV_QUEUE_ID | head -1)

Création d'un ensemble de tâches simple_file_job avec des E/S de fichiers

Une tâche de rendu doit lire la définition de la scène, en faire le rendu d'une image, puis enregistrer cette image dans un fichier de sortie. Vous pouvez simuler cette action en demandant à la tâche de calculer le hachage de l'entrée au lieu de restituer une image.

Pour créer un ensemble de tâches simple_file_job avec des E/S de fichiers
  1. Sélectionnez votre premier CloudShell onglet, puis accédez au répertoire des exemples de lots de tâches.

    cd ~/deadline-cloud-samples/job_bundles/
  2. Faites-en une copie simple_job avec le nouveau nomsimple_file_job.

    cp -r simple_job simple_file_job
  3. Modifiez le modèle de tâche comme suit :

    Note

    Nous vous recommandons de l'utiliser nano pour ces étapes. Si vous préférez l'utiliserVim, vous devez définir son mode de collage à l'aide de:set paste.

    1. Ouvrez le modèle dans un éditeur de texte.

      nano simple_file_job/template.yaml
    2. Ajoutez les éléments suivants typeobjectType, et dataFlowparameterDefinitions.

      - name: InFile type: PATH objectType: FILE dataFlow: IN - name: OutFile type: PATH objectType: FILE dataFlow: OUT
    3. Ajoutez la commande de bash script suivante à la fin du fichier qui lit le fichier d'entrée et écrit dans le fichier de sortie.

      # hash the input file, and write that to the output sha256sum "{{Param.InFile}}" > "{{Param.OutFile}}"

      La mise à jour template.yaml doit correspondre exactement à ce qui suit :

      specificationVersion: 'jobtemplate-2023-09' name: Simple File Job Bundle Example parameterDefinitions: - name: Message type: STRING default: Welcome to AWS Deadline Cloud! - name: InFile type: PATH objectType: FILE dataFlow: IN - name: OutFile type: PATH objectType: FILE dataFlow: OUT steps: - name: WelcomeToDeadlineCloud script: actions: onRun: command: '{{Task.File.runScript}}' embeddedFiles: - name: runScript type: TEXT runnable: true data: | #!/usr/bin/env bash echo "{{Param.Message}}" # hash the input file, and write that to the output sha256sum "{{Param.InFile}}" > "{{Param.OutFile}}"
      Note

      Si vous souhaitez ajuster l'espacement dans letemplate.yaml, assurez-vous d'utiliser des espaces plutôt que des indentations.

    4. Enregistrez le fichier et quittez l'éditeur de texte.

  4. Fournissez des valeurs de paramètres pour les fichiers d'entrée et de sortie afin de soumettre le simple_file_job.

    deadline bundle submit simple_file_job \ -p "InFile=simple_job/template.yaml" \ -p "OutFile=hash.txt"
  5. Imprimez les informations relatives à la tâche.

    deadline job get
    • Vous verrez des résultats tels que les suivants :

      parameters: Message: string: Welcome to AWS Deadline Cloud! InFile: path: /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/simple_job/template.yaml OutFile: path: /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/hash.txt
    • Bien que vous n'ayez fourni que des chemins relatifs, le chemin complet est défini pour les paramètres. Le AWS CLI joint le répertoire de travail actuel à tous les chemins fournis en tant que paramètres lorsque les chemins ont le typePATH.

    • L'agent de travail exécuté dans l'autre fenêtre du terminal prend en charge et exécute la tâche. Cette action crée le hash.txt fichier, que vous pouvez consulter à l'aide de la commande suivante.

      cat hash.txt

      Cette commande imprimera un résultat similaire à ce qui suit.

      eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3 /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/simple_job/template.yaml