Pianificare i workflow

Questo tutorial mostra come utilizzare Cloud Scheduler per eseguire automaticamente Workflows in modo che un workflow venga eseguito in base a una pianificazione specifica, in questo caso ogni 5 minuti.

Obiettivi

  1. Crea ed esegui il deployment di un workflow in grado di ricevere argomenti di runtime.
  2. Crea un job Cloud Scheduler che attivi il workflow e lo esegua ogni 5 minuti, passando gli argomenti JSON nel formato corretto.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi Google Cloud utenti potrebbero avere diritto a una prova senza costi.

Prima di iniziare

  1. Configura l'ambiente per Cloud Scheduler, inclusa la creazione di un'app App Engine.
  2. Abilita l'API Workflows.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    Abilita l'API

  3. Imposta la località predefinita utilizzata in questo tutorial:
      gcloud config set workflows/location REGION
    Sostituisci REGION con la località Workflows supportata che preferisci.
  4. Crea un account di servizio per Workflows, ad esempio, sa-name.
      gcloud iam service-accounts create sa-name
  5. Concedi al account di servizio il ruolo workflows.invoker in modo che l' account abbia l'autorizzazione per attivare il workflow:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/workflows.invoker"
  6. Sostituisci PROJECT_ID con l'ID progetto Google Cloud .
  7. Concedi il ruolo logging.logWriter al account di servizio.
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/logging.logWriter"

Crea un workflow che riceva argomenti di runtime

Una definizione di workflow è costituita da una serie di passaggi descritti utilizzando la sintassi di Workflows, che può essere scritta in formato YAML o JSON. Dopo aver creato un workflow, esegui il deployment per renderlo disponibile per l'esecuzione.

Console

  1. Nella Google Cloud console, vai alla pagina Workflow:

    Vai a Flussi di lavoro

  2. Fai clic su Crea.

  3. Inserisci myFirstWorkflow come nome del nuovo workflow.

  4. Seleziona us-east1 per la regione.

  5. Seleziona il account di servizio che hai creato in precedenza.

  6. Fai clic su Avanti.

  7. Nell'editor del workflow, inserisci la seguente definizione per il 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}"
            }
          }
        ]
      }
    }
      

    Questo workflow restituisce un saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti di runtime.

  8. Fai clic su Esegui il deployment.

gcloud

  1. Apri un terminale.
  2. Salva la seguente definizione di workflow come file YAML o JSON, ad esempio myFirstWorkflow.yaml o 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}"
            }
          }
        ]
      }
    }
      

    Questo workflow restituisce un saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti di runtime.

  3. Esegui il deployment del workflow inserendo il seguente comando:

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

    Sostituisci yaml_OR_json con yaml o json a seconda del formato del file di definizione di Workflows che hai creato in precedenza.

Pianifica il workflow

Crea un job Cloud Scheduler che attivi il workflow utilizzando il service account che hai creato in precedenza.

Console

  1. Nella Google Cloud console, vai alla pagina Cloud Scheduler:

    Vai a Cloud Scheduler

  2. Fai clic su Crea job.

  3. Imposta Nome su my-workflow-job.

  4. In Regione, seleziona us-east1 (Carolina del Sud).