Attiva flussi di lavoro utilizzando i messaggi Pub/Sub (gcloud CLI)
Questa guida rapida mostra come eseguire un flusso di lavoro utilizzando un trigger Eventarc che riceve eventi utilizzando Pub/Sub. Il trigger esegue il flusso di lavoro trasmettendo gli eventi distribuiti tramite Pub/Sub come argomenti di runtime a un flusso di lavoro di destinazione.
In questa guida rapida, imparerai a:
- Utilizza Workflows per creare ed eseguire il deployment di un flusso di lavoro che decodifica e restituisce messaggi Pub/Sub.
- Crea un trigger Eventarc che collega un argomento Pub/Sub a un destinatario di eventi Workflows.
- Pubblica un messaggio nell'argomento Pub/Sub per generare un evento. Questo evento viene passato come argomento di runtime al flusso di lavoro di destinazione.
- Visualizza il messaggio Pub/Sub come risultato dell'esecuzione del flusso di lavoro.
Prima di iniziare
Assicurati di avere accesso a questa funzionalità richiedendo l'aggiunta del tuo progetto alle anteprime private per Google Cloud Workflows.
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Creare un progetto Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Creare un progetto Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
- Aggiorna i componenti gcloud:
gcloud components update
Abilita le API Eventarc, Pub/Sub ed Eventarc.
gcloud services enable eventarc.googleapis.com pubsub.googleapis.com workflows.googleapis.com workflowexecutions.googleapis.com
- Imposta le variabili di configurazione utilizzate in questo tutorial:
export WORKFLOW_LOCATION=us-central1 export TRIGGER_LOCATION=us-central1 export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID} gcloud config set workflows/location ${WORKFLOW_LOCATION} gcloud config set eventarc/location ${TRIGGER_LOCATION}
- Crea un account di servizio e assegnagli un nome, ad esempio
my-service-account
.export MY_SERVICE_ACCOUNT=my-service-account gcloud iam service-accounts create ${MY_SERVICE_ACCOUNT}
- Concedi il ruolo
roles/workflows.invoker
all'account di servizio:gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${MY_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/workflows.invoker"
- Concedi all'utente il ruolo
roles/iam.serviceAccountTokenCreator
:gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="PRINCIPAL" \ --role='roles/iam.serviceAccountTokenCreator'
Sostituisci
PRINCIPAL
con un'identità valida a cui vuoi concedere il ruolo. Ad esempio:- Email dell'Account Google:
user:test-user@gmail.com
- Gruppo Google:
group:admins@example.com
- Account di servizio:
serviceAccount:test123@example.domain.com
- Dominio Google Workspace o Cloud Identity:
domain:example.domain.com
- Email dell'Account Google:
Crea ed esegui il deployment di un flusso di lavoro
Crea ed esegui il deployment di un flusso di lavoro che viene eseguito quando un messaggio pubblicato in un argomento Pub/Sub attiva un flusso di lavoro con una richiesta HTTP.- Apri un terminale o Cloud Shell.
- Nella tua directory home, crea un nuovo file denominato
myFirstWorkflow.yaml
omyFirstWorkflow.json
. - Copia e incolla quanto segue nel nuovo file e salvalo:
YAML
main: params: [event] steps: - decode_pubsub_message: assign: - base64: ${base64.decode(event.data.message.data)} - message: ${text.decode(base64)} - return_pubsub_message: return: ${message}
JSON
{ "main": { "params": [ "event" ], "steps": [ { "decode_pubsub_message": { "assign": [ { "base64": "${base64.decode(event.data.message.data)}" }, { "message": "${text.decode(base64)}" } ] } }, { "return_pubsub_message": { "return": "${message}" } } ] } }
- Esegui il deployment del flusso di lavoro:
export MY_WORKFLOW=myFirstWorkflow gcloud workflows deploy ${MY_WORKFLOW} --source=myFirstWorkflow.yaml
Sostituisci.yaml
con.json
se hai copiato la versione JSON del flusso di lavoro di esempio.
Crea un trigger Eventarc
Quando un messaggio viene pubblicato nell'argomento Pub/Sub, l'evento attiva il flusso di lavoro.- Crea un trigger per ascoltare i messaggi Pub/Sub:
Nuovo argomento Pub/Sub
gcloud eventarc triggers create events-pubsub-trigger \ --destination-workflow=${MY_WORKFLOW} \ --destination-workflow-location=${WORKFLOW_LOCATION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account="${MY_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com"
In questo modo viene creato un nuovo argomento Pub/Sub e un trigger denominato
events-pubsub-trigger
.Argomento Pub/Sub esistente
gcloud eventarc triggers create events-pubsub-trigger \ --destination-workflow=${MY_WORKFLOW} \ --destination-workflow-location=${WORKFLOW_LOCATION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account="${MY_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ --transport-topic=TOPIC_ID
Sostituisci
TOPIC_ID
con l'ID dell'argomento Pub/Sub esistente.Viene creato un trigger denominato
events-pubsub-trigger
per un argomento Pub/Sub esistente. - Verifica che il trigger sia stato creato correttamente:
gcloud eventarc triggers describe events-pubsub-trigger --location=${TRIGGER_LOCATION}
Generare e visualizzare un evento
Pubblicare un messaggio nell'argomento Pub/Sub per generare un evento e attivare il flusso di lavoro. L'evento generato viene trasmesso come argomento runtime nel flusso di lavoro che restituisce il messaggio Pub/Sub a seguito dell'esecuzione del flusso di lavoro. Assicurati che le dimensioni degli eventi trasmessi al flusso di lavoro non superino i 512 kB.
Se hai creato un trigger per un nuovo argomento Pub/Sub, trova e imposta l'argomento Pub/Sub creato come variabile di ambiente:
export TOPIC_ID=$(basename $(gcloud eventarc triggers describe events-pubsub-trigger --format='value(transport.pubsub.topic)'))
Per attivare il flusso di lavoro, invia un messaggio all'argomento Pub/Sub:
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
L'evento generato viene trasmesso come argomento di runtime al flusso di lavoro che restituisce un messaggio "Ciao".
Per verificare che sia stata attivata un'esecuzione dei flussi di lavoro, elenca le ultime cinque esecuzioni:
gcloud workflows executions list ${MY_WORKFLOW} --limit=5
L'output dovrebbe essere simile al seguente ed elencare valori NAME e STATE pari a
SUCCEEDED
per ogni esecuzione del flusso di lavoro.NAME: projects/606789101455/locations/us-central1/workflows/myFirstWorkflow/executions/8c02b8f1-8836-4a6d-99d9-fc321eb9668f STATE: SUCCEEDED START_TIME: 2021-09-13T19:15:10.275677049Z END_TIME: 2021-09-13T19:15:10.963136883Z NAME: projects/606789101455/locations/us-central1/workflows/myFirstWorkflow/executions/a6319d9d-36a6-4117-904e-3d1118bdc90a STATE: SUCCEEDED START_TIME: 2021-09-13T17:28:51.492864252Z END_TIME: 2021-09-13T17:28:52.227212414Z
Tieni presente che nel campoNAME
dell'esempio precedente,a6319d9d-36a6-4117-904e-3d1118bdc90a
è l'ID dell'esecuzione del flusso di lavoro. Copia l'ID esecuzione da utilizzare nel passaggio successivo.Per visualizzare il messaggio dell'evento:
Per visualizzare lo stato dell'esecuzione:
gcloud workflows executions describe WORKFLOW_EXECUTION_NAME
SostituisciWORKFLOW_EXECUTION_NAME
con il nome dell'esecuzione del flusso di lavoro che corrisponde alla data e all'ora di pubblicazione dell'argomento Pub/Sub. L'output è simile al seguente:argument: {"data":{"message":{"data":"aGVsbG8gd29ybGQ=","messageId":"1234567","publishTime":"2022-01-24T17:42:49.133Z"},"subscription":"projects/my-project/subscriptions/my-subscription"},"datacontenttype":"application/json","id":"1234567","source":"//pubsub.googleapis.com/projects/my-project/topics/my-topic","specversion":"1.0","time":"2022-01-24T17:42:49.133Z","type":"google.cloud.pubsub.topic.v1.messagePublished"} endTime: '2021-09-13T17:28:47.301012152Z' name: projects/1234567/locations/us-central1/workflows/myFirstWorkflow/executions/f72bc6d4-5ea0-4dfb-bb14-2dae82303120 result: 'Hello there' startTime: '2021-09-13T17:28:51.492864252Z' state: SUCCEEDED workflowVersionId: '1'
Verifica che il"publish_time": "2021-09-13T17:28"
in cui è stato pubblicato il messaggio Pub/Sub e ilstartTime
dell'esecuzione del flusso di lavoro corrispondano.Cerca il messaggio di evento
result: "Hello there!"
.
Congratulazioni, hai generato correttamente un evento utilizzando un argomento Pub/Sub che ha attivato un destinatario di eventi Workflows utilizzando Eventarc.
Esegui la pulizia
- Elimina il flusso di lavoro creato:
gcloud workflows delete ${MY_WORKFLOW}
Quando ti viene chiesto se vuoi continuare, digita
y
. - Elimina il trigger creato in questo tutorial:
gcloud eventarc triggers delete events-pubsub-trigger