Planifier des workflows

Ce tutoriel explique comment utiliser Cloud Scheduler pour exécuter automatiquement Workflows afin qu'un workflow s'exécute selon une planification spécifique, dans ce cas toutes les cinq minutes.

Créer un workflow qui reçoit les arguments d'exécution

Une définition de workflow est constituée d'une série d'étapes décrites à l'aide de la syntaxe Workflows, qui peut être écrite au format YAML ou JSON. Après avoir créé un workflow, vous pouvez le déployer pour le rendre disponible en exécution.

Console

  1. Dans la console Google Cloud , accédez à la page Workflows :

    Accéder à "Workflows"

  2. Cliquez sur Create (Créer).

  3. Saisissez myFirstWorkflow comme nom pour votre nouveau workflow.

  4. Sélectionnez us-central1 pour la région.

  5. Sélectionnez le compte de service que vous avez créé précédemment.

  6. Cliquez sur Next (Suivant).

  7. Dans l'éditeur de workflow, saisissez la définition suivante pour votre workflow.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Ce workflow renvoie un message d'accueil "Hello" à une personne dont vous transmettez le prénom et le nom en tant qu'arguments d'exécution.

  8. Cliquez sur Déployer.

gcloud

  1. Ouvrez un terminal.
  2. Enregistrez la définition de workflow suivante sous forme de fichier YAML ou JSON, tel que myFirstWorkflow.yaml ou myFirstWorkflow.json.

    YAML

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${outputVar}

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "step1": {
              "assign": [
                {
                  "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}"
                }
              ]
            }
          },
          {
            "step2": {
              "return": "${outputVar}"
            }
          }
        ]
      }
    }
      

    Ce workflow renvoie un message d'accueil "Hello" à une personne dont vous transmettez le prénom et le nom en tant qu'arguments d'exécution.

  3. Déployez le workflow en saisissant la commande suivante :

    gcloud workflows deploy myFirstWorkflow \
        --source=myFirstWorkflow.yaml_OR_json \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com

    Remplacez yaml_OR_json par yaml ou json en fonction du format du fichier de définition Workflows que vous avez créé précédemment.

Planifier le workflow

Créez une tâche Cloud Scheduler qui déclenche votre workflow à l'aide du compte de service que vous avez créé précédemment.

Console

  1. Dans la console Google Cloud , accédez à la page Cloud Scheduler :

    Accéder à Cloud Scheduler

  2. Cliquez sur Créer une tâche.

  3. Dans le champ Nom, spécifiez my-workflow-job.

  4. Pour Fréquence, saisissez :

    */5 * * * *
    La tâche s'exécutera toutes les cinq minutes. L'intervalle est défini au format unix-cron.

  5. Pour Fuseau horaire, sélectionnez un pays et un fuseau horaire.

    Par exemple, sélectionnez États-Unis et Los Angeles ou Heure avancée du Pacifique (PDT).

  6. Cliquez sur Continuer.

  7. Pour Type de cible, sélectionnez HTTP.

  8. Pour URL, saisissez :

    https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
    

  9. Laissez la méthode HTTP sur la valeur par défaut POST.

  10. Ajoutez les deux en-têtes HTTP suivants :

    • Nom : Content-Type et Valeur : application/octet-stream
    • Nom : User-Agent et Valeur : Google-Cloud-Scheduler
  11. Pour Corps, saisissez :

    {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
    

    Cela a pour effet de transmettre un encodage JSON des arguments du workflow : dans ce cas, le prénom, "Sherlock", et le nom de famille, "Holmes". Les guillemets doubles dans la chaîne sont échappés à l'aide de barres obliques inverses (\).

  12. Pour En-tête de l'authentification, sélectionnez Ajouter un jeton OAuth.

  13. Saisissez le compte de service que vous avez créé précédemment.

    sa-name@PROJECT_ID.iam.gserviceaccount.com
    
    Vous n'avez pas besoin de spécifier le champ d'application, car la valeur par défaut de https://www.googleapis.com/auth/cloud-platform est utilisée.

  14. Acceptez tous les autres paramètres par défaut et cliquez sur Créer.

gcloud

Planifiez une tâche appelée my-workflow-job en saisissant la commande suivante :

gcloud scheduler jobs create http my-workflow-job \
    --schedule="*/5 * * * *" \
    --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
    --message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
    --time-zone="America/Los_Angeles" \
    --oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"

L'intervalle est défini au format unix-cron.

L'option message-body permet de transmettre un encodage JSON des arguments du workflow : dans ce cas, le prénom, "Sherlock", et le nom de famille, "Holmes". Les guillemets doubles dans la chaîne sont échappés à l'aide de barres obliques inverses (\).

Votre workflow s'exécute désormais toutes les cinq minutes.

Pour en savoir plus sur les options gcloud scheduler et sur la façon d'appliquer la journalisation des appels afin que chaque étape d'appel lors de l'exécution de votre workflow soit journalisée, consultez Planifier un workflow et la documentation de référence sur gcloud.

Exécuter le job et vérifier les résultats

Console

  1. Dans la console Google Cloud , accédez à la page Cloud Scheduler :

    Accéder à Cloud Scheduler

    Si le job ne s'affiche pas, vous devrez peut-être actualiser la page.

  2. Pour la tâche nommée my-workflow-job, cliquez sur Exécuter maintenant.

    La valeur Résultat doit maintenant passer à Opération réussie.

  3. Dans la console Google Cloud , accédez à la page Workflows :

    Accéder à "Workflows"

  4. Dans la liste des workflows, cliquez sur myFirstWorkflow pour ouvrir la page d'informations.

    L'état d'exécution de votre workflow doit être Réussite.

  5. Cliquez sur l'ID d'exécution du workflow pour ouvrir la page de détails et afficher les résultats du workflow dans le volet de résultat.

    Le résultat doit être "Hello, Sherlock Holmes!".

gcloud

  1. Exécutez la tâche Cloud Scheduler pour exécuter le workflow :

    gcloud scheduler jobs run my-workflow-job
    
  2. Récupérez l'ID d'exécution de votre workflow :

    gcloud workflows executions list myFirstWorkflow
    

    Le résultat doit se présenter comme suit avec l'ID d'exécution en gras :

    projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
  3. Récupérez les résultats de l'exécution du workflow :

    gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow

    Remplacez EXECUTION_ID par l'ID d'exécution renvoyé à l'étape précédente.

    La sortie doit ressembler à ceci :

    argument: '{"firstName":"Sherlock","lastName":"Holmes"}'
    endTime: '2021-09-09T15:15:00.869350639Z'
    name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
    result: '"Hello, Sherlock Holmes!"'
    startTime: '2021-09-09T15:15:00.839175480Z'
    state: SUCCEEDED
    workflowRevisionId: 000001-4f9

Félicitations ! Vous avez créé une tâche Cloud Scheduler qui exécute automatiquement un workflow selon une planification spécifique.