Pianificazione di un flusso di lavoro utilizzando Cloud Scheduler

Questa pagina mostra come utilizzare Cloud Scheduler per eseguire un flusso di lavoro in base a una pianificazione specifica, ad esempio ogni lunedì alle 9:00 o ogni 15 minuti. Puoi configurare la pianificazione nella console Google Cloud o utilizzando Google Cloud CLI.

Prima di iniziare

  1. Se non hai già un flusso di lavoro da pianificare, creane e implementane uno.
  2. Enable the Cloud Scheduler API.

    Enable the API

  3. In alternativa, in un terminale, inserisci il seguente comando:
    gcloud services enable cloudscheduler.googleapis.com

Pianificare un workflow

  1. Crea un service account in modo che Cloud Scheduler possa effettuare richieste all'API Workflows:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Sostituisci SERVICE_ACCOUNT_NAME con un nome compreso tra 6 e 30 caratteri. Può contenere caratteri alfanumerici minuscoli e trattini. Una volta creato un account di servizio, non puoi modificarne il nome.

  2. Per consentire all'entità che eseguirà i comandi di Cloud Scheduler di agire come service account Identity and Access Management (IAM), concedi un ruolo che consenta all'entità di impersonare il service account.

  3. Concedi al nuovo 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:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role roles/workflows.invoker

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
  4. Crea un job Cloud Scheduler che attiva il flusso di lavoro utilizzando l'account di servizio che hai creato in precedenza per l'autenticazione.

    Tieni presente che se stai applicando il registro chiamate, devi configurarlo tramite la pagina Workflows nella consoleGoogle Cloud . Per maggiori dettagli, consulta i passaggi seguenti.

    Console

    1. Per pianificare un flusso di lavoro, vai alla pagina Workflows nella console Google Cloud :

      Vai a Flussi di lavoro

    2. Nella pagina Workflows, seleziona un workflow per accedere alla pagina dei dettagli.

    3. Nella pagina Dettagli del flusso di lavoro, fai clic su Modifica.

    4. Nella pagina Modifica flusso di lavoro, seleziona Aggiungi nuovo trigger > Cloud Scheduler.

      Viene visualizzato il riquadro Crea un job Scheduler.

    5. Definisci la pianificazione:

      1. Nel campo Nome, inserisci un nome per il job Cloud Scheduler. Deve essere univoco per i job nella stessa regione.

      2. Nell'elenco Regione, seleziona una regione appropriata, ad esempio us-central1.

      3. Nel campo Frequenza, specifica un intervallo di tempo definito in un formato unix-cron. Ad esempio, per programmare l'esecuzione del flusso di lavoro ogni 5 minuti, digita */5 * * * *.

      4. Nell'elenco Fuso orario, seleziona il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione che fornisci. Puoi cercare per paese.

    6. Fai clic su Continua.

    7. Configura l'esecuzione:

      1. Nel campo Argomento del flusso di lavoro, specifica gli argomenti di runtime da passare al flusso di lavoro prima dell'esecuzione. Gli argomenti devono essere in formato JSON. Ad esempio: {"firstName":"Sherlock", "lastName":"Holmes"}. Se il flusso di lavoro non utilizza argomenti runtime, accetta il valore predefinito di {} o lascia il campo vuoto.

      2. Nell'elenco Livello registro chiamate del flusso di lavoro, seleziona il livello di registrazione delle chiamate che vuoi applicare durante l'esecuzione del flusso di lavoro:

        • Non specificato: non è specificato alcun livello di logging. Questa è l'impostazione predefinita. Un livello di log dell'esecuzione ha la precedenza su qualsiasi livello di log del workflow, a meno che il livello di log dell'esecuzione non sia specificato (valore predefinito). In questo caso, viene applicato il livello di log del workflow.
        • Solo errori: registra tutte le eccezioni rilevate o quando una chiamata viene interrotta a causa di un'eccezione.
        • Tutte le chiamate: registra tutte le chiamate a flussi di lavoro secondari o funzioni di libreria e i relativi risultati.
        • Nessun log: nessun registro chiamate.
      3. Nell'elenco Service account, seleziona il account di servizio che hai creato in precedenza.

    8. Fai clic su Crea.

      Tieni presente che se stai aggiornando un flusso di lavoro esistente, non devi ridistribuirlo.

      Il job Cloud Scheduler è ora elencato nella scheda Trigger della pagina Dettagli flusso di lavoro.

    9. Se vuoi aggiornare o eliminare il job, devi modificare il workflow:

      1. Nella pagina Dettagli del flusso di lavoro, fai clic su Modifica.
      2. Nella sezione Trigger, individua il job che vuoi aggiornare o eliminare.
      3. Fai clic su Modifica risorsa o Elimina risorsa.

    gcloud

    1. Apri un terminale e inserisci il seguente comando:

      gcloud scheduler jobs create http JOB_NAME \
          --schedule="FREQUENCY" \
          --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
          --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
          --time-zone="TIME_ZONE" \
          --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

      Sostituisci quanto segue:

      • JOB_NAME: il nome che stai assegnando al tuo job Cloud Scheduler.
      • FREQUENCY: un intervallo di tempo definito utilizzando un formato unix-cron. Ad esempio, per programmare l'esecuzione del flusso di lavoro ogni 5 minuti, digita */5 * * * *.
      • PROJECT_ID: l'ID del tuo Google Cloud progetto.
      • REGION_NAME: la regione in cui si trova il flusso di lavoro, ad esempio us-central1.
      • WORKFLOW_NAME: il nome del flusso di lavoro di cui vuoi pianificare l'esecuzione.
      • DOUBLE_ESCAPED_JSON_STRING: una codifica JSON di tutti gli argomenti che stai passando. Le virgolette doppie all'interno della stringa tra virgolette vengono precedute da una barra rovesciata (\). Ad esempio: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione che fornisci. Ad esempio: America/New_York.
      • SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
    2. Per elencare tutti i job in un progetto:

      gcloud scheduler jobs list

    3. Per eliminare un job:

      gcloud scheduler jobs delete JOB_NAME

Il flusso di lavoro viene ora eseguito in base alla frequenza che hai definito.

Passaggi successivi