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 particolare, ad esempio ogni lunedì alle 9:00 o ogni 15 minuti. Puoi configurare la pianificazione nella console Google Cloud oppure utilizzando Google Cloud CLI.

Prima di iniziare

  1. Se non hai ancora un flusso di lavoro da pianificare, crealo e implementalo.
  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

Pianifica un flusso di lavoro

  1. Crea un account di servizio in modo che Cloud Scheduler possa inviare 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. Consente all'entità che eseguirà il tuo Cloud Scheduler consente di agire come servizio IAM (Identity and Access Management) l'account di servizio, concedi un ruolo che consenta all'entità di impersonare l'account di servizio.

  3. Concedi al nuovo account di servizio il ruolo workflows.invoker in modo che l'account abbia l'autorizzazione per attivare il flusso di lavoro:

    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 progetto Google Cloud.
    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio che hai creato in precedenza.
  4. Crea un job Cloud Scheduler che attiva il flusso di lavoro utilizzando il comando creato in precedenza per l'autenticazione.

    Tieni presente che se applichi il logging delle chiamate, devi configurarlo tramite la pagina Workflows in Google Cloud Console. Per maggiori dettagli, consulta i passaggi riportati di seguito.

    Console

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

      Vai a Flussi di lavoro

    2. Nella pagina Flussi di lavoro, seleziona un flusso di lavoro per accedere alla relativa pagina dettagli.

    3. Nella pagina Dettagli 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 Cloud Scheduler lavoro. Deve essere univoco per i job nella stessa regione.

      2. Nell'elenco Regione, seleziona un'area region; ad esempio us-central1.

      3. Nel campo Frequenza, specifica un intervallo di tempo definito in un formato unix-cron. Ad esempio, per pianificare 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 effettuare la ricerca per paese.

    6. Fai clic su Continua.

    7. Configura l'esecuzione:

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

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

        • Non specificato: non è specificato alcun livello di logging. Questa è l'impostazione predefinita. Un livello di log di esecuzione ha la precedenza su qualsiasi livello di log del flusso di lavoro, a meno che il livello di log dell'esecuzione non è specificato (valore predefinito); in questo caso viene applicato il livello di log del flusso di lavoro.
        • 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 ai flussi di lavoro secondari o alle funzioni della libreria e i relativi risultati.
        • Nessun log: nessuna registrazione delle chiamate.
      3. Nell'elenco Account di servizio, seleziona l'account di servizio creato in precedenza.

    8. Fai clic su Crea.

      Tieni presente che se stai aggiornando un flusso di lavoro esistente, non è necessario per rieseguire il deployment del flusso di lavoro.

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

    9. Se vuoi aggiornare o eliminare il job, devi modificare il flusso di lavoro:

      1. Nella pagina Dettagli flusso di lavoro, fai clic su Modifica.
      2. Nella sezione Trigger, individua il job da aggiornare o eliminare.
      3. Fai clic su Modifica risorsa o su 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 assegni al tuo Job Cloud Scheduler.
      • FREQUENCY: un intervallo di tempo da te definito utilizzando un unix-cron. Ad esempio, per pianificare l'esecuzione del flusso di lavoro ogni 5 minuti, digita */5 * * * *.
      • PROJECT_ID: l'ID del tuo progetto Google Cloud.
      • REGION_NAME: la regione in cui si trova il flusso di lavoro, ad esempio us-central1.
      • WORKFLOW_NAME: il nome del flusso di lavoro da pianificarne 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 sono interpretate come carattere di escape utilizzando le barre rovesciate (\). Ad esempio: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione che fornisce. Ad esempio: America/New_York.
      • SERVICE_ACCOUNT_NAME: il nome dell'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 tuo flusso di lavoro ora viene eseguito in base alla frequenza che hai definito.

Passaggi successivi