Questo tutorial mostra come utilizzare Cloud Scheduler per eseguire automaticamente Flussi di lavoro in modo che un flusso di lavoro venga eseguito in base a una determinata pianificazione, in questo caso ogni 5 minuti.
Obiettivi
- Crea ed esegui il deployment di un flusso di lavoro che può ricevere argomenti di runtime.
- Crea un job Cloud Scheduler che attivi il flusso di lavoro e lo esegue ogni 5 minuti, passando argomenti JSON nel formato corretto.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Prima di iniziare
- Configura il tuo ambiente per Cloud Scheduler, ad esempio sulla creazione di un'app di App Engine.
-
Enable the Workflows API.
- Imposta la posizione predefinita utilizzata in questo tutorial:
Sostituiscigcloud config set workflows/location REGION
REGION
con i Workflows supportati località di tua scelta. - Creare un account di servizio da utilizzare in Workflows. ad esempio
sa-name
.gcloud iam service-accounts create sa-name
- Concedi al tuo account di servizio il ruolo
workflows.invoker
in modo che account dispone dell'autorizzazione per attivare il tuo flusso di lavoro: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.logWriter
all'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 del tuo progetto Google Cloud.
Crea un flusso di lavoro che riceve argomenti di runtime
Una definizione di flusso di lavoro è composta 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, 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
myFirstWorkflow
come nome del nuovo flusso di lavoro.Seleziona us-central1 come regione.
Seleziona l'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 un saluto "Un saluto da Google" a una persona di cui hai passato il nome e il cognome come argomenti di runtime.
Fai clic su Esegui il deployment.
gcloud
- Apri un terminale.
Salva la definizione del flusso di lavoro seguente come YAML o JSON come 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 un saluto "Un saluto da Google" a una persona di cui hai passato il nome e il cognome come argomenti di runtime.
Esegui il deployment del flusso di lavoro inserendo il comando seguente:
gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
Sostituisci
yaml_OR_json
conyaml
ojson
, a seconda sul formato del file di definizione di Workflows che creati in precedenza.
Pianifica il flusso di lavoro
Crea un job Cloud Scheduler che attivi il flusso di lavoro utilizzando il servizio creato in precedenza.
Console
Nella console Google Cloud, vai alla pagina Cloud Scheduler:
Fai clic su Crea job.
Imposta il Nome su
my-workflow-job
.In Frequenza, inserisci:
Il job verrà eseguito ogni 5 minuti. L'intervallo è definito utilizzando il formato unix-cron.*/5 * * * *
In 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.
Per URL, inserisci:
https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions
Lascia il metodo HTTP sul valore predefinito POST.
Aggiungi le due intestazioni HTTP seguenti:
- Nome:
Content-Type
e valore:application/octet-stream
- Nome:
User-Agent
e valore:Google-Cloud-Scheduler
- Nome:
In Testo, inserisci:
{"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}
Viene passata 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 trasformati in caratteri di escape mediante barre rovesciate (\).
Per Intestazione autorizzazione, seleziona Aggiungi token OAuth.
Inserisci l'account di servizio creato in precedenza.
Non è necessario specificare l'Ambito come valore predefinito Viene utilizzatosa-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 il seguente 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 viene definito utilizzando unix-cron. formato.
Il flag message-body
viene utilizzato per passare 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 sono interpretate come carattere di escape utilizzando le barre rovesciate (\).
Ora il flusso di lavoro viene eseguito ogni 5 minuti.
Per ulteriori informazioni sui flag gcloud scheduler
e su come applicarli
il logging delle chiamate in modo che ogni passaggio della chiamata durante l'esecuzione del flusso di lavoro
registrato, consulta Pianificare un flusso di lavoro e
gcloud
riferimento.
Esegui il job e verifica i risultati
Console
Nella console Google Cloud, 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 di Result dovrebbe essere aggiornato in Success.
Nella console Google Cloud, vai alla pagina Flussi di lavoro:
Nell'elenco dei flussi di lavoro, fai clic su myFirstWorkflow per aprire il relativo pagina dei dettagli.
Lo stato di esecuzione del flusso di lavoro deve essere Riuscito.
Fai clic sull'ID esecuzione del flusso di lavoro per aprire la pagina dei dettagli e per visualizzare i risultati del flusso di lavoro nel riquadro Output.
L'output dovrebbe essere "Ciao, Sherlock Holmes!".
gcloud
Esegui il job Cloud Scheduler per il flusso di lavoro:
gcloud scheduler jobs run my-workflow-job
Recupera l'ID esecuzione per il tuo flusso di lavoro:
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 flusso di lavoro:
gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow
Sostituisci
EXECUTION_ID
con 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 determinata pianificazione.
Esegui la pulizia
Al termine del tutorial, puoi eliminare le risorse che hai creato in modo che smettano di utilizzare la quota e di generare addebiti. Le seguenti sezioni descrivono come eliminare o disattivare queste risorse.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione creato per il tutorial.
Per eliminare il progetto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina il job Cloud Scheduler
Vai alla pagina Cloud Scheduler nella console Google Cloud.
Seleziona la casella di controllo accanto al job.
Fai clic su Elimina nella parte superiore della pagina e conferma l'eliminazione.
Elimina il flusso di lavoro di Workflows
Vai alla pagina Flussi di lavoro nella console Google Cloud.
Seleziona il flusso di lavoro.
Fai clic su Elimina nella parte superiore della pagina, digita il nome del flusso di lavoro e conferma l'eliminazione.
Disattiva l'app App Engine
La disabilitazione di un'app di App Engine interrompe l'esecuzione dell'applicazione le istanze VM e gestire le richieste, conservando i dati e le impostazioni dell'applicazione.
Vai alla pagina Impostazioni applicazione nella console Google Cloud.
Fai clic su Disabilita applicazione.
Segui le istruzioni.
Passaggi successivi
- Scopri di più su Workflows.