Gestione dei trigger

I trigger Eventarc ti consentono di instradare gli eventi dai provider di eventi alle destinazioni di destinazione. La visualizzazione, l'aggiornamento e l'eliminazione dei trigger ti aiutano a controllare la distribuzione degli eventi e a mantenere le tue architetture basate su eventi. Puoi eseguire queste attività utilizzando la console Google Cloud , Google Cloud CLI nel terminale o in Cloud Shell oppure l'API Eventarc.

Elenca trigger

Puoi elencare, filtrare e ordinare i trigger in tutte le località.

Console

  1. Nella console Google Cloud , vai alla pagina Trigger di Eventarc.

    Vai ai trigger

    Vengono elencati tutti i trigger nel progetto per tutte le località e sono inclusi dettagli come il nome del trigger, la regione, il provider di eventi, la destinazione e il tipo di evento.

  2. Per filtrare gli attivatori in base a una proprietà specifica:

    1. Fai clic sulla casella Filtro.
    2. Dall'elenco Proprietà, seleziona un'opzione in base alla quale filtrare i trigger, ad esempio Nome o Canale di eventi.

    Puoi selezionare una singola proprietà o utilizzare l'operatore logico OR per aggiungere altre proprietà in base alle quali filtrare.

  3. Per ordinare gli attivatori, fai clic su Ordina accanto all'intestazione della colonna appropriata.

    Solo alcune colonne sono ordinabili, ad esempio Nome, Regione o Canale di eventi.

gcloud

gcloud eventarc triggers list --location=-

Questo comando elenca il nome, il tipo, la destinazione e lo stato del trigger in tutte le località.

REST

Per elencare i trigger in un progetto e una località specifici, utilizza il metodo projects.locations.triggers.list.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • LOCATION: la regione in cui vengono creati i trigger, ad esempio us-central1.

Per inviare la richiesta, espandi una di queste opzioni:

In caso di esito positivo, il corpo della risposta contiene istanze di Trigger e la risposta dovrebbe essere simile alla seguente:

{
  "triggers": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
      "uid": "d700773a-698b-47b2-a712-2ee10b690062",
      "createTime": "2022-12-06T22:44:04.744001514Z",
      "updateTime": "2022-12-06T22:44:09.116459550Z",
      "eventFilters": [
        {
          "attribute": "type",
          "value": "google.cloud.pubsub.topic.v1.messagePublished"
        }
      ],
      "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
      "destination": {
        "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
      },
      "transport": {
        "pubsub": {
          "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
          "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
        }
      }
    },
    {
      object (Trigger)
    }
  ],
  "nextPageToken": string,
  "unreachable": [
    string
  ]
}

Descrivi un trigger

Puoi descrivere un trigger in una località specifica.

Console

  1. Nella console Google Cloud , vai alla pagina Trigger di Eventarc.

    Vai ai trigger

  2. Nell'elenco dei trigger, fai clic su quello di cui vuoi conoscere i dettagli.

La pagina Dettagli trigger mostra i dettagli del trigger, come nome, regione, provider di eventi, tipo di evento, tipo di contenuto dei dati sugli eventi e destinazione.

Se la destinazione dell'evento è Cloud Run, viene indicato se una policy di ripetizione è abilitata o disabilitata.

gcloud

gcloud eventarc triggers describe TRIGGER \
    --location=LOCATION

Sostituisci quanto segue:

  • TRIGGER: l'ID del trigger o un identificatore completo.
  • LOCATION: la località del trigger Eventarc.

Questo comando restituisce informazioni sul trigger simili alle seguenti:

  createTime: '2023-03-16T13:40:44.889670204Z'
  destination:
    cloudRun:
      path: /
      region: us-central1
      service: hello
  eventDataContentType: application/protobuf
  eventFilters:
  - attribute: serviceName
    value: cloudscheduler.googleapis.com
  - attribute: methodName
    value: google.cloud.scheduler.v1.CloudScheduler.DeleteJob
  - attribute: type
    value: google.cloud.audit.log.v1.written
  name: projects/project-name/locations/us-central1/triggers/name-of-trigger
  serviceAccount: project-number-compute@developer.gserviceaccount.com
  transport:
    pubsub:
      subscription: projects/project-name/subscriptions/eventarc-us-central1-name-of-trigger-sub-034
      topic: projects/project-name/topics/eventarc-us-central1-name-of-trigger-931

REST

Per descrivere un trigger in un progetto e una località specifici, utilizza il metodo projects.locations.triggers.get.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • TRIGGER_NAME: il nome del trigger che vuoi descrivere.
  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • LOCATION: la regione in cui viene creato il trigger, ad esempio us-central1.

Per inviare la richiesta, espandi una di queste opzioni:

In caso di esito positivo, il corpo della risposta contiene un'istanza di Trigger simile alla seguente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
  "uid": "d700773a-698b-47b2-a712-2ee10b690062",
  "createTime": "2022-12-06T22:44:04.744001514Z",
  "updateTime": "2022-12-06T22:44:09.116459550Z",
  "eventFilters": [
    {
      "attribute": "type",
      "value": "google.cloud.pubsub.topic.v1.messagePublished"
    }
  ],
  "serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com",
  "destination": {
    "workflow": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME"
  },
  "transport": {
    "pubsub": {
      "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
      "subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    }
  }
}

Se la condizione del trigger indica un problema con l'argomento Pub/Sub, consulta Il trigger non invia eventi.

Aggiorna un trigger

Puoi aggiornare un trigger per le destinazioni Cloud Run, Google Kubernetes Engine (GKE) e Workflows. A seconda della destinazione, è possibile aggiornare campi specifici.

Console

  1. Nella console Google Cloud , vai alla pagina Trigger di Eventarc.

    Vai ai trigger

  2. Nell'elenco dei trigger, fai clic su quello di cui vuoi conoscere i dettagli.

  3. Nella pagina Dettagli trigger, fai clic su Modifica.

  4. Modifica i campi in base alle necessità e fai clic su Salva.

    Tieni presente che non puoi aggiornare i campi non disponibili, come Provider di eventi e Destinazione evento. Per saperne di più sui campi, consulta le istruzioni della console per un provider, un tipo di evento e una destinazione specifici.

gcloud

Cloud Run

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --event-filters=NEW_EVENT_FILTERS \
    --service-account=NEW_SERVICE_ACCOUNT \
    --destination-run-region=NEW_REGION \
    --destination-run-service=NEW_SERVICE \
    --destination-run-path=NEW_PATH \
    --event-data-content-type="NEW_EVENT_DATA_TYPE" \
    --max-retry-attempts=1

Sostituisci quanto segue:

  • TRIGGER: l'ID del trigger o un identificatore completo.
  • LOCATION: la località del trigger Eventarc.

Puoi aggiornare uno dei seguenti elementi:

  • NEW_EVENT_FILTERS: il filtro utilizzato per configurare il routing degli eventi del trigger; ad esempio, methodName=storage.objects.create può essere aggiornato a methodName=storage.objects.delete. Tieni presente che, dopo la creazione di un trigger, il filtro degli eventi type non può essere modificato. Per un tipo di evento diverso, devi creare un nuovo trigger.
  • NEW_SERVICE_ACCOUNT: l'indirizzo email del account di servizio Identity and Access Management (IAM) associato al trigger.
  • NEW_REGION: la regione in cui si trova il servizio Cloud Run di destinazione.
  • NEW_SERVICE: il nome del servizio Cloud Run che riceve gli eventi per il trigger.
  • NEW_PATH: il percorso relativo nel servizio Cloud Run di destinazione a cui devono essere inviati gli eventi per il trigger.
  • NEW_EVENT_DATA_TYPE: la codifica del payload dell'evento; a seconda del provider di eventi, può essere application/json o application/protobuf.
  • Facoltativamente, puoi utilizzare il flag --max-retry-attempts per specificare un singolo tentativo di invio di un messaggio di evento senza nuovi tentativi. L'unico valore valido è 1. Questo flag si applica solo alle destinazioni Cloud Run (incluse Cloud Run Functions). Per cancellare l'impostazione, utilizza il flag --clear-max-retry-attempts. Per saperne di più, consulta Riprova eventi.

Ad esempio, per aggiornare il account di servizio per un trigger:

gcloud eventarc triggers update my-cloud-run-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com

Questo comando aggiorna il account di servizio di un trigger denominato my-cloud-run-trigger in new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com.

GKE

Tieni presente che questa sezione si applica anche agli endpoint pubblici dei servizi privati e pubblici in esecuzione in un cluster GKE.

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --destination-gke-namespace=NEW_NAMESPACE \
    --destination-gke-service=NEW_SERVICE \
    --destination-gke-path=NEW_PATH \
    --event-data-content-type="NEW_EVENT_DATA_TYPE"

Sostituisci quanto segue:

  • TRIGGER: l'ID del trigger o un identificatore completo.
  • LOCATION: la località del trigger Eventarc.

Puoi aggiornare uno dei seguenti elementi:

  • NEW_NAMESPACE: lo spazio dei nomi in cui è in esecuzione il servizio GKE di destinazione.
  • NEW_SERVICE: il nome del servizio GKE che riceve gli eventi per il trigger.
  • NEW_PATH: il percorso relativo nel servizio GKE di destinazione a cui devono essere inviati gli eventi per il trigger.
  • NEW_EVENT_DATA_TYPE: la codifica del payload dell'evento; a seconda del provider di eventi, può essere application/json o application/protobuf.

Ad esempio, per aggiornare il servizio di ricezione di eventi per un trigger:

gcloud eventarc triggers update my-gke-trigger \
    --destination-gke-service=helloworld-events

Questo comando aggiorna il servizio del ricevitore di eventi per un trigger denominato my-gke-trigger in un servizio GKE denominato helloworld-events.

Workflow

gcloud eventarc triggers update TRIGGER \
    --location=LOCATION \
    --event-filters=NEW_EVENT_FILTERS \
    --service-account=NEW_SERVICE_ACCOUNT \
    --destination-workflow=NEW_DESTINATION_WORKFLOW \
    --destination-workflow-location=NEW_DESTINATION_WORKFLOW_LOCATION \
    --event-data-content-type="NEW_EVENT_DATA_TYPE"

Sostituisci quanto segue:

  • TRIGGER: l'ID del trigger o un identificatore completo.
  • LOCATION: la località del trigger Eventarc.

Puoi aggiornare uno dei seguenti elementi:

  • NEW_EVENT_FILTERS: il filtro utilizzato per configurare il routing degli eventi del trigger; ad esempio, methodName=storage.objects.create può essere aggiornato in methodName=storage.objects.delete. Tieni presente che, dopo la creazione di un trigger, il filtro degli eventi type non può essere modificato. Per un tipo di evento diverso, devi creare un nuovo trigger.
  • NEW_SERVICE_ACCOUNT: l'indirizzo email del account di servizio Identity and Access Management (IAM) associato al trigger.
  • NEW_DESTINATION_WORKFLOW: l'ID del workflow di cui è stato eseguito il deployment che riceve gli eventi dal trigger.
  • NEW_DESTINATION_WORKFLOW_LOCATION: la località in cui viene eseguito il deployment del workflow di destinazione.
  • NEW_EVENT_DATA_TYPE: la codifica del payload dell'evento; a seconda del provider di eventi, può essere application/json o application/protobuf.

Ad esempio, per aggiornare il account di servizio per un trigger:

gcloud eventarc triggers update my-workflows-trigger \
    --service-account=new-serviceaccount@${PROJECT_ID}.iam.gserviceaccount.com

Questo comando aggiorna il account di servizio di un trigger denominato my-workflows-trigger in new-serviceaccount@PROJECT_ID.iam.gserviceaccount.com.

REST

Per aggiornare un trigger esistente, utilizza il metodo projects.locations.triggers.patch e, facoltativamente, il parametro di query updateMask per specificare un elenco di campi da aggiornare.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • TRIGGER_NAME: il nome del trigger che vuoi aggiornare.
  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • LOCATION: la regione in cui viene creato il trigger, ad esempio us-central1.
  • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: facoltativo. L'indirizzo email del account di servizio Identity and Access Management (IAM) associato al trigger.
  • DESTINATION: facoltativo. Specifica la destinazione a cui deve essere inviato l'evento e contiene un'istanza di Destination. Ad esempio:

    {"destination": {"workflow": "projects/my-project/locations/us-central1/workflows/my-first-workflow"}}

    o

    {"destination": {"cloudRun": {"service": "hello-world", "region": "us-central1"}}}

  • EVENT_FILTER: facoltativo. Gli attributi dell'evento in base ai quali applicare il filtro. È supportato solo l'aggiornamento del tipo di metodo per i trigger di Cloud Audit Logs. Ad esempio:

    {"eventFilters": [{"attribute": "methodName", "value": "storage.buckets.create"}, {"attribute": "type", "value": "google.cloud.audit.log.v1.written"}, {"attribute": "serviceName", "value": "storage.googleapis.com"}]}

    Tieni presente che non puoi aggiornare i tipi di metodo per le destinazioni GKE.

  • CONTENT_TYPE: facoltativo. La codifica del payload dell'evento; a seconda del provider di eventi, può essere application/json o application/protobuf.
  • RETRY_POLICY: facoltativo. Il numero massimo di tentativi di invio di eventi. Il valore valido è 1, che indica un singolo tentativo di invio senza nuovi tentativi e si applica solo alle destinazioni Cloud Run (incluse Cloud Run Functions). Ad esempio:

    {"retryPolicy": {"maxAttempts": 1}}

    Per saperne di più, consulta Eventi di ripetizione.
  • UPDATE_FIELDS: facoltativo. Un elenco di campi separati da virgole da aggiornare. Se non viene fornito, vengono aggiornati tutti i campi forniti nella richiesta. Ad esempio: serviceAccount,destination

Corpo JSON della richiesta:

{
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "destination": DESTINATION,
  "eventFilters": EVENT_FILTER,
  "eventDataContentType": "CONTENT_TYPE",
  "retryPolicy": RETRY_POLICY
}

Per inviare la richiesta, espandi una di queste opzioni:

In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation appena creata:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Se il valore di "done" è false, l'operazione è ancora in corso.

Elimina un trigger

Puoi eliminare un trigger.

Console

  1. Nella console Google Cloud , vai alla pagina Trigger di Eventarc.

    Vai ai trigger

  2. Seleziona l'attivatore e fai clic su Elimina.

gcloud

gcloud eventarc triggers delete TRIGGER

Sostituisci TRIGGER con l'ID del trigger o un identificatore completo.

REST

Per eliminare un trigger con un nome specificato, utilizza il metodo projects.locations.triggers.delete.

Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

  • PROJECT_ID: il tuo ID progetto Google Cloud.
  • LOCATION: la regione in cui viene creato il trigger, ad esempio us-central1.
  • TRIGGER_NAME: il nome del trigger che vuoi eliminare.

Per inviare la richiesta, espandi una di queste opzioni:

In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-24T17:53:52.834876290Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Se il valore di "done" è false, l'operazione è ancora in corso.

Passaggi successivi