Questa pagina mostra come utilizzare Cloud Scheduler per eseguire un workflow in base a una pianificazione specifica, ad esempio ogni lunedì alle 09:00 o ogni 15 minuti. Puoi configurare la pianificazione nella console Google Cloud o utilizzando Google Cloud CLI.
Prima di iniziare
- Se non hai ancora un workflow che vuoi pianificare, creane uno ed eseguine il deployment.
Abilita l'API Cloud Scheduler, se non è già abilitata.
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 Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
In alternativa, inserisci il seguente comando in un terminale:
gcloud services enable cloudscheduler.googleapis.com
Pianifica un workflow
Crea un service account in modo che Cloud Scheduler possa inviare richieste all'API Workflows:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAMEcon 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.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.
Concedi al nuovo account di servizio il ruolo workflows.invoker in modo che l'account disponga dell'autorizzazione per attivare il workflow:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role roles/workflows.invoker
Sostituisci quanto segue:
PROJECT_ID: l'ID del tuo progetto Google Cloud .SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
Crea un job Cloud Scheduler che attivi il workflow, utilizzando il account di servizio creato in precedenza per l'autenticazione.
Tieni presente che, se applichi il logging delle chiamate, devi configurarlo tramite la pagina Workflows nella consoleGoogle Cloud . Per maggiori dettagli, consulta i passaggi seguenti.
Console
Per pianificare un workflow, vai alla pagina Workflows nella console Google Cloud :
Nella pagina Workflows, seleziona un workflow per andare alla relativa pagina dei dettagli.
Nella pagina Dettagli workflow, fai clic su edit Modifica.
Nella pagina Modifica workflow, seleziona Aggiungi nuovo trigger > Cloud Scheduler.
Viene visualizzato il riquadro Crea un job di Scheduler.
Definisci la pianificazione:
Nel campo Nome, inserisci un nome per il job Cloud Scheduler. Deve essere univoco tra i job nella stessa regione.
Nell'elenco Regione, seleziona una regione appropriata, ad esempio us-central1.
Nel campo Frequenza, specifica un intervallo di tempo definito in un formato unix-cron. Ad esempio, per pianificare l'esecuzione del workflow ogni 5 minuti, digita
*/5 * * * *.Nell'elenco Fuso orario, seleziona il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione che fornisci. Puoi eseguire la ricerca per paese.
Fai clic su Continua.
Configura l'esecuzione:
Nel campo Argomento del workflow, specifica gli argomenti di runtime da passare al workflow prima dell'esecuzione. Gli argomenti devono essere in formato JSON. Ad esempio:
. Se il tuo workflow non utilizza argomenti di runtime, accetta il valore predefinito di{"firstName":"Sherlock", "lastName":"Holmes"}{}o lascia il campo vuoto.Nell'elenco Livello registri chiamate del workflow, seleziona il livello di logging delle chiamate che vuoi applicare durante l'esecuzione del workflow:
- 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 (impostazione predefinita). 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 subworkflow o alle funzioni della libreria e i relativi risultati.
- Nessun registro chiamate: nessun logging delle chiamate.
Nell'elenco Service account, seleziona il account di servizio che hai creato in precedenza.
Fai clic su Crea.
Tieni presente che se stai aggiornando un workflow esistente, non è necessario rifare il deployment del workflow.
Il job Cloud Scheduler è ora elencato nella scheda Trigger della pagina Dettagli workflow.
Se vuoi aggiornare o eliminare il job, devi modificare il workflow:
- Nella pagina Dettagli workflow, fai clic su edit Modifica.
- Nella sezione Trigger, trova il job che vuoi aggiornare o eliminare.
- Fai clic su edit Modifica risorsa o delete Elimina risorsa.
gcloud
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."
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 pianificare l'esecuzione del workflow ogni 5 minuti, digita*/5 * * * *.PROJECT_ID: l'ID del tuo progetto Google Cloud .REGION_NAME: la regione in cui si trova il workflow, ad esempious-central1.WORKFLOW_NAME: il nome del workflow 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 barre rovesciate (\). Ad esempio:--message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"TIME_ZONE: il fuso orario che Cloud Scheduler deve utilizzare per interpretare la pianificazione che fornisci. Ad esempioAmerica/New_York.SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
Per elencare tutti i job in un progetto:
gcloud scheduler jobs list
Per eliminare un job:
gcloud scheduler jobs delete JOB_NAME
Il workflow viene ora eseguito in base alla frequenza definita.