Questo tutorial mostra come utilizzare Cloud Scheduler per eseguire automaticamente Workflows in modo che un workflow venga eseguito in base a una pianificazione specifica, in questo caso ogni 5 minuti.
Obiettivi
- Crea ed esegui il deployment di un workflow in grado di ricevere argomenti di runtime.
- Crea un job Cloud Scheduler che attivi il workflow e lo esegua ogni 5 minuti, passando gli argomenti JSON nel formato corretto.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Prima di iniziare
- Configura l'ambiente per Cloud Scheduler, inclusa la creazione di un'app App Engine.
Abilita l'API Workflows.
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 utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.- Imposta la località predefinita utilizzata in questo tutorial:
Sostituiscigcloud config set workflows/location REGION
REGIONcon la località Workflows supportata che preferisci. - Crea un account di servizio per Workflows, ad esempio,
sa-name.gcloud iam service-accounts create sa-name
- Concedi al account di servizio il ruolo
workflows.invokerin modo che l' account abbia l'autorizzazione per attivare il workflow:gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/workflows.invoker"
Sostituisci - Concedi il ruolo
logging.logWriteral account di servizio.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/logging.logWriter"
PROJECT_ID con l'ID progetto Google Cloud .
Crea un workflow che riceva argomenti di runtime
Una definizione di workflow è costituita da una serie di passaggi descritti utilizzando la sintassi di Workflows, che può essere scritta in formato YAML o JSON. Dopo aver creato un workflow, esegui il deployment per renderlo disponibile per l'esecuzione.
Console
Nella Google Cloud console, vai alla pagina Workflow:
Fai clic su Crea.
Inserisci
myFirstWorkflowcome nome del nuovo workflow.Seleziona us-east1 per la regione.
Seleziona il account di servizio che hai creato in precedenza.
Fai clic su Avanti.
Nell'editor del workflow, inserisci la seguente definizione per il workflow.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Questo workflow restituisce un saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti di runtime.
Fai clic su Esegui il deployment.
gcloud
- Apri un terminale.
Salva la seguente definizione di workflow come file YAML o JSON, ad esempio myFirstWorkflow.yaml o myFirstWorkflow.json.
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
Questo workflow restituisce un saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti di runtime.
Esegui il deployment del workflow inserendo il seguente comando:
gcloud workflows deploy myFirstWorkflow \ --location=us-east1 \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
Sostituisci
yaml_OR_jsonconyamlojsona seconda del formato del file di definizione di Workflows che hai creato in precedenza.
Pianifica il workflow
Crea un job Cloud Scheduler che attivi il workflow utilizzando il service account che hai creato in precedenza.
Console
Nella Google Cloud console, vai alla pagina Cloud Scheduler:
Fai clic su Crea job.
Imposta Nome su
my-workflow-job.In Regione, seleziona us-east1 (Carolina del Sud).