Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Guida rapida: attiva i flussi di lavoro utilizzando i messaggi Pub/Sub (Google Cloud CLI)

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:

  1. Utilizza Workflows per creare ed eseguire il deployment di un flusso di lavoro che decodifica e restituisce messaggi Pub/Sub.
  2. Crea un trigger Eventarc che collega un argomento Pub/Sub a un destinatario di eventi Workflows.
  3. 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.
  4. 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.

  1. 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.
  2. Installa Google Cloud CLI.
  3. Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:

    gcloud init
  4. 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
  5. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  6. Installa Google Cloud CLI.
  7. Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:

    gcloud init
  8. 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
  9. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  10. Aggiorna i componenti gcloud:
    gcloud components update
  11. Abilita le API Eventarc, Pub/Sub ed Eventarc.

    gcloud services enable eventarc.googleapis.com pubsub.googleapis.com workflows.googleapis.com workflowexecutions.googleapis.com
  12. 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}
    
  13. 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}
  14. 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"

  15. 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

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.
  1. Apri un terminale o Cloud Shell.
  2. Nella tua directory home, crea un nuovo file denominato myFirstWorkflow.yaml o myFirstWorkflow.json.
  3. 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}"
            }
          }
        ]
      }
    }
  4. 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.
  1. 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.

  2. 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.

  1. 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)'))
    
  2. 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".

  3. 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 campo NAME 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.

  4. Per visualizzare il messaggio dell'evento:

    1. Per visualizzare lo stato dell'esecuzione:

      gcloud workflows executions describe WORKFLOW_EXECUTION_NAME
      Sostituisci WORKFLOW_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 il startTime dell'esecuzione del flusso di lavoro corrispondano.

    2. 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

  1. Elimina il flusso di lavoro creato:
    gcloud workflows delete ${MY_WORKFLOW}

    Quando ti viene chiesto se vuoi continuare, digita y.

  2. Elimina il trigger creato in questo tutorial:
    gcloud eventarc triggers delete events-pubsub-trigger
    

Passaggi successivi