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 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 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

Pianificare 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. Per consentire al principale che eseguirà i comandi di Cloud Scheduler di agire come account di servizio Identity and Access Management (IAM), concedi un ruolo che consenta al principale di rubare l'identità dell'account di servizio.

  3. Concedi al nuovo account di servizio il ruolo workflows.invoker in modo che abbia l'autorizzazione per attivare il tuo 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 attivi il flusso di lavoro utilizzando l'account di servizio che hai 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, segui i passaggi che seguono.

    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 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 attivatore > 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 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 cercare 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. Ad esempio: {"firstName":"Sherlock", "lastName":"Holmes"}. Se il flusso di lavoro non utilizza gli argomenti di runtime, accetta il valore predefinito {} o lascia vuoto il campo.

      2. Nell'elenco Livello log di chiamate del flusso di lavoro, seleziona il livello di registrazione 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 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 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 che hai creato in precedenza.

    8. Fai clic su Crea.

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

      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, 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 assegnato al tuo job Cloud Scheduler.
      • FREQUENCY: un intervallo di tempo definito utilizzando un 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 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 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 programmazione che fornisci. 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

Ora il flusso di lavoro viene eseguito in base alla frequenza che hai definito.

Passaggi successivi