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 determinata pianificazione, ad esempio ogni lunedì alle 09:00 oppure 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 uno ed eseguine il deployment.
  2. Attiva l'API Cloud Scheduler.

    Abilita l'API

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

Pianifica un flusso di lavoro

  1. Crea un account di servizio 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 account di servizio Identity and Access Management (IAM), 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 disponga dell'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 creato in precedenza.
  4. Crea un job Cloud Scheduler che attiva il flusso di lavoro utilizzando l'account di servizio creato in precedenza per l'autenticazione.

    Tieni presente che se applichi il logging delle chiamate, devi configurarlo tramite la pagina Flussi di lavoro nella console Google Cloud. Per maggiori dettagli, consulta i seguenti passaggi.

    Console

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

      Vai a Workflows

    2. Nella pagina Workflows, seleziona un flusso di lavoro per andare alla relativa pagina dei 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 il job Cloud Scheduler. Deve essere univoco nei job della 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 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 fornita. Puoi eseguire la ricerca in base al 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. Ad esempio: {"firstName":"Sherlock", "lastName":"Holmes"}. Se il tuo flusso di lavoro non utilizza argomenti di runtime, accetta il valore predefinito di {} o lascia vuoto il campo.

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

        • Non specificato: non è specificato nessun livello di logging. Questa è l'impostazione predefinita. Un livello di log dell'esecuzione ha la precedenza su qualsiasi livello di log del flusso di lavoro, a meno che non sia specificato il livello di log dell'esecuzione (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 di libreria e i relativi risultati.
        • Nessun log: nessun registro chiamate.
      3. Nell'elenco Account di servizio, seleziona l'account di servizio creato in precedenza.

    8. Fai clic su Crea.

      Tieni presente che se aggiorni un flusso di lavoro esistente, non è necessario eseguirne nuovamente il deployment.

      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 flusso di lavoro:

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

    gcloud

    1. Apri un terminale e inserisci questo 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 job Cloud Scheduler.
      • FREQUENCY: un intervallo di tempo definito utilizzando il formato 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 tuo flusso di lavoro, ad esempio us-central1.
      • WORKFLOW_NAME: il nome del flusso di lavoro di cui pianificare l'esecuzione.
      • DOUBLE_ESCAPED_JSON_STRING: una codifica JSON degli argomenti trasmessi. Le virgolette all'interno della stringa tra virgolette sono escluse con le barre rovesciate (\). Ad esempio: --message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
      • TIME_ZONE: il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione fornita. Ad esempio: America/New_York.
      • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio 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 ora viene eseguito in base alla frequenza definita.

Passaggi successivi