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.
Crea un workflow che riceve argomenti di runtime
Una definizione del flusso di lavoro è 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 flusso di lavoro, lo esegui il deployment per renderlo disponibile per l'esecuzione.
Console
Nella console Google Cloud , vai alla pagina Flussi di lavoro:
Fai clic su Crea.
Inserisci
myFirstWorkflowcome nome del nuovo flusso di lavoro.Seleziona us-central1 per la regione.
Seleziona il account di servizio che hai creato in precedenza.
Fai clic su Avanti.
Nell'editor del flusso di lavoro, inserisci la seguente definizione per il flusso di lavoro.
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 flusso di lavoro restituisce il saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti runtime.
Fai clic su Esegui il deployment.
gcloud
- Apri un terminale.
Salva la seguente definizione del flusso di lavoro 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 flusso di lavoro restituisce il saluto "Hello" a una persona di cui passi il nome e il cognome come argomenti runtime.
Esegui il deployment del flusso di lavoro inserendo questo comando:
gcloud workflows deploy myFirstWorkflow \ --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 attiva il flusso di lavoro utilizzando il service account 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 Frequenza, inserisci:
Il job verrà eseguito ogni 5 minuti. L'intervallo è definito utilizzando il formato unix-cron.*/5 * * * *Per Fuso orario, seleziona un paese e un fuso orario.
Ad esempio, seleziona Stati Uniti e Los Angeles o Ora legale del Pacifico (PDT).
Fai clic su Continua.
In Tipo di destinazione, seleziona HTTP.
In URL, inserisci:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Lascia il metodo HTTP impostato sul valore predefinito POST.
Aggiungi le due intestazioni HTTP seguenti:
- Nome:
Content-Typee valore:application/octet-stream - Nome:
User-Agente valore:Google-Cloud-Scheduler
- Nome:
In Corpo, inserisci:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}Viene trasmessa una codifica JSON degli argomenti del flusso di lavoro; in questo caso, il nome "Sherlock" e il cognome "Holmes". Le virgolette doppie all'interno della stringa vengono sottoposte a escape utilizzando le barre rovesciate (\).
Per Intestazione di autenticazione, seleziona Aggiungi token OAuth.
Inserisci il account di servizio che hai creato in precedenza.
Non è necessario specificare l'ambito, poiché viene utilizzato il valore predefinitosa-name@PROJECT_ID.iam.gserviceaccount.com
https://www.googleapis.com/auth/cloud-platform.Accetta tutte le altre impostazioni predefinite e fai clic su Crea.
gcloud
Pianifica un job denominato my-workflow-job inserendo questo comando:
gcloud scheduler jobs create http my-workflow-job \
--schedule="*/5 * * * *" \
--uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
--message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
--time-zone="America/Los_Angeles" \
--oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"L'intervallo è definito utilizzando il formato unix-cron.
Il flag message-body viene utilizzato per passare una codifica JSON degli argomenti del workflow; in questo caso, il nome, "Sherlock", e il cognome, "Holmes". Le virgolette doppie all'interno della stringa vengono sottoposte all'escape
utilizzando le barre rovesciate (\).
Ora il workflow viene eseguito ogni 5 minuti.
Per saperne di più sui flag gcloud scheduler e su come applicare
la registrazione delle chiamate in modo che ogni passaggio della chiamata durante l'esecuzione del flusso di lavoro venga
registrato, consulta Pianificare un flusso di lavoro e il
gcloud riferimento.
Esegui il job e verifica i risultati
Console
Nella Google Cloud console, vai alla pagina Cloud Scheduler:
Se il job non viene visualizzato, potresti dover aggiornare la pagina.
Per il job denominato
my-workflow-job, fai clic su Esegui ora.Il valore Risultato dovrebbe essere aggiornato a Riuscita.
Nella console Google Cloud , vai alla pagina Flussi di lavoro:
Nell'elenco dei flussi di lavoro, fai clic su myFirstWorkflow per aprire la pagina dei dettagli.
Lo stato di esecuzione del workflow deve essere Riuscito.
Fai clic sull'ID esecuzione del flusso di lavoro per aprire la pagina dei dettagli e visualizzare i risultati del flusso di lavoro nel riquadro Output.
L'output dovrebbe essere "Hello, Sherlock Holmes!".
gcloud
Esegui il job Cloud Scheduler per eseguire il flusso di lavoro:
gcloud scheduler jobs run my-workflow-job
Recupera l'ID esecuzione del workflow:
gcloud workflows executions list myFirstWorkflow
L'output dovrebbe essere simile al seguente, con l'ID esecuzione in grassetto:
projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320
Recupera i risultati dell'esecuzione del workflow:
gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow
Sostituisci
EXECUTION_IDcon l'ID esecuzione restituito nel passaggio precedente.L'output dovrebbe essere simile al seguente:
argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
Complimenti! Hai creato un job Cloud Scheduler che esegue automaticamente un flusso di lavoro in base a una pianificazione specifica.