Pubblicare eventi da origini Google

Puoi attivare la raccolta e la pubblicazione di eventi da origini Google per un bus Eventarc Advanced specifico creando una risorsa GoogleApiSource.

Gli eventi provenienti da origini Google vengono attivati direttamente da un evento non mediato, ad esempio la creazione di una funzione Cloud Run o una modifica dello stato di un job Dataflow. Per saperne di più, vedi Tipi di eventi Google supportati da Eventarc.

Tieni presente quanto segue:

  • Per impostazione predefinita, gli eventi vengono raccolti dal progetto Google Cloud in cui esiste la risorsa GoogleApiSource. Puoi anche utilizzare gcloud CLI per raccogliere eventi da più progetti che si trovano nella stessa organizzazione della risorsa GoogleApiSource. Per ulteriori informazioni, consulta la sezione Pubblicare eventi da più progetti di questo documento.
  • Puoi pubblicare eventi in un bus che si trova in un progetto Google Cloud diverso da quello in cui esiste la risorsa GoogleApiSource. Puoi configurare questa operazione utilizzando gcloud CLI o inviando una richiesta all'API Eventarc (ma non tramite la console Google Cloud ).
  • Esiste un limite di una risorsa GoogleApiSource per progetto per regione. Google Cloud

Prima di iniziare

Prima di iniziare, assicurati di aver completato i seguenti passaggi:

Console

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Eventarc and Eventarc Publishing APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Eventarc and Eventarc Publishing APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

gcloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  4. To initialize the gcloud CLI, run the following command:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Eventarc and Eventarc Publishing APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  8. Install the Google Cloud CLI.

  9. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  10. To initialize the gcloud CLI, run the following command:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the Eventarc and Eventarc Publishing APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Attivare gli eventi dalle origini Google

Per pubblicare eventi provenienti da origini Google, devi creare una risorsa GoogleApiSource. Questa risorsa rappresenta un abbonamento agli eventi API di Google in un progetto Google Cloud specifico per un particolare bus Eventarc Advanced.

Puoi attivare la pubblicazione di eventi da origini Google nei seguenti modi:

  • Nella console Google Cloud
  • Utilizzando Google Cloud CLI nel terminale o in Cloud Shell
  • Inviando una richiesta all'API Eventarc

Console

  1. Nella console Google Cloud , vai alla pagina Eventarc > Bus.

    Vai a Autobus

  2. Puoi creare un bus o, se stai aggiornando un bus, fai clic su Modifica.

  3. Nella pagina Modifica bus, per aggiungere un'origine messaggi, fai clic su Aggiungi origine.

    1. Nel riquadro Aggiungi origine messaggio, per il fornitore di messaggi dell'API Google, accetta il valore predefinito google-api-source o inserisci un nome di origine messaggio diverso.
    2. Fai clic su Crea.
  4. Fai clic su Salva.

gcloud

  1. Apri un terminale.

  2. Puoi abilitare gli eventi dalle origini Google utilizzando il comando gcloud eventarc google-api-sources create:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID

    Sostituisci quanto segue:

    • GOOGLE_API_SOURCE_NAME: l'ID o l'identificatore completo della risorsa GoogleApiSource che rappresenta un abbonamento agli eventi API di Google per un determinato bus
    • BUS_NAME: l'ID o l'identificatore completo del bus per cui vuoi abbonarti agli eventi dell'API Google
    • BUS_PROJECT_ID: l' Google Cloud ID progetto per il bus

    (Facoltativo) Puoi anche utilizzare i seguenti flag:

    • --async per tornare immediatamente dal comando, senza attendere il completamento dell'operazione in corso.
    • --crypto-key per specificare il nome completo di una chiave di crittografia gestita dal cliente; se non specificato,vengono utilizzati Google-owned and managed keys .
    • --logging-config per configurare il livello di logging, che deve essere uno dei seguenti: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Per saperne di più, consulta LogSeverity.

API REST

Per attivare gli eventi dalle origini Google, utilizza il metodo projects.locations.googleApiSources.create.

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

  • GOOGLE_API_SOURCE_NAME: il nome visualizzato della risorsa GoogleApiSource che rappresenta un abbonamento agli eventi API di Google per un bus specifico, ad esempio my_google_source.
  • LABEL_KEY e LABEL_VALUE: facoltativi. Una mappa di coppie chiave-valore di etichette che ti aiutano a organizzare le tue risorse. Google Cloud Per saperne di più, vedi Che cosa sono le etichette?
  • ANNOTATION_KEY e ANNOTATION_VALUE: facoltativi. Una mappa di coppie chiave-valore di testo in formato libero. Puoi utilizzarli per allegare informazioni arbitrarie associate alla risorsa. Per ulteriori informazioni, consulta la sezione Annotazioni.
  • DESTINATION: l'identificatore completo del bus Eventarc Advanced a cui devono essere pubblicati gli eventi di origine Google nel formato projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME. Per maggiori informazioni, vedi Creare un bus per instradare i messaggi.
  • ENCRYPT_KEY: facoltativo. Una chiave Cloud KMS che la risorsa GoogleApiSource deve utilizzare per la crittografia dei dati nel formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME. Per saperne di più, vedi Utilizzare le chiavi di crittografia gestite dal cliente.
  • PROJECT_ID: l'ID progetto in cui creare la risorsa GoogleApiSource. Google Cloud
  • LOCATION: la regione supportata in cui creare la risorsa GoogleApiSource, ad esempio us-central1.
  • LOG_SEVERITY: facoltativo. La gravità minima dell'evento descritto in una voce di log. Uno dei seguenti valori: NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY. Il valore predefinito è NONE. Per saperne di più, consulta LogSeverity.

Corpo JSON della richiesta:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

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/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Gli eventi provenienti da origini Google nello stesso progetto Google Cloud della risorsaGoogleApiSource vengono ora raccolti e pubblicati nel bus.

Disattivare gli eventi dalle origini Google

Per disattivare la pubblicazione di eventi da origini Google in un progettoGoogle Cloud specifico a un bus Eventarc Advanced, devi eliminare la risorsa GoogleApiSource.

Puoi disattivare la pubblicazione di eventi da origini Google nei seguenti modi:

  • Nella console Google Cloud
  • Utilizzando gcloud CLI nel terminale o in Cloud Shell
  • Inviando una richiesta all'API Eventarc

Console

  1. Nella console Google Cloud , vai alla pagina Eventarc > Dettagli bus.

    Vai ai dettagli dell'autobus

  2. Fai clic su Modifica.

  3. Nella pagina Modifica bus, per eliminare il provider di messaggi dell'API Google, fai clic su Elimina risorsa per l'origine dei messaggi google-api-source (o il nome che le hai assegnato).

  4. Al prompt Elimina risorsa, fai clic su Conferma.

  5. Fai clic su Salva.

gcloud

  1. Apri un terminale.

  2. Puoi disattivare gli eventi provenienti da origini Google utilizzando il comando gcloud eventarc google-api-sources delete:

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    Sostituisci quanto segue:

    • GOOGLE_API_SOURCE_NAME: l'ID o l'identificatore completo della risorsa GoogleApiSource
    • REGION: la posizione della risorsa GoogleApiSource

API REST

Per disattivare gli eventi provenienti da origini Google, utilizza il metodo projects.locations.googleApiSources.delete.

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

  • PROJECT_ID: l'ID Google Cloud progetto in cui viene creata la risorsa GoogleApiSource.
  • LOCATION: la regione in cui viene creata la risorsa GoogleApiSource, ad esempio us-central1.
  • GOOGLE_API_SOURCE_NAME: il nome della risorsa GoogleApiSource 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 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/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Gli eventi provenienti da origini Google nello stesso progetto Google Cloud della risorsa GoogleApiSource eliminata non vengono più raccolti e pubblicati.

Pubblicare eventi da più progetti

Per raccogliere e pubblicare eventi di origine Google da più Google Cloud progetti, devi creare una risorsa GoogleApiSource e i progetti devono appartenere alla stessa organizzazione della risorsa GoogleApiSource. Per saperne di più sulle organizzazioni, consulta Gerarchia delle risorse.

Tieni presente quanto segue:

  • La pubblicazione di eventi da più progetti deve essere configurata utilizzando gcloud CLI e non viene visualizzata nella console Google Cloud .
  • Se il progetto contenente la risorsa GoogleApiSource viene spostato in un'altra organizzazione, la pubblicazione di eventi da più progetti non funzionerà più come previsto. Devi aggiornare o ricreare la risorsa GoogleApiSource.

1. Concedi al service agent Eventarc il ruolo IAM appropriato

Per raccogliere eventi a livello di organizzazione, utilizza il comando gcloud organizations add-iam-policy-binding per concedere al service agent Eventarc il ruolo IAM (Identity and Access Management) appropriato:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID risorsa organizzazione.
  • SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio principale di Eventarc nel progetto in cui stai creando la risorsa GoogleApiSource. L'indirizzo email ha il seguente formato:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
    

    Sostituisci PROJECT_NUMBER con il numero del tuo progettoGoogle Cloud . Puoi trovare il numero di progetto nella pagina Benvenuto della console Google Cloud o eseguendo questo comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    

2. Pubblicare da tutti i progetti o da un elenco di progetti

Per pubblicare eventi da origini Google in più progetti, utilizza il comando gcloud eventarc google-api-sources create in uno dei seguenti modi:

  • Pubblica da tutti Google Cloud i progetti nella stessa organizzazione della risorsa GoogleApiSource:

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • Pubblica da un elenco di progetti nella stessa organizzazione della risorsa GoogleApiSource: Google Cloud

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    Sostituisci quanto segue:

    • GOOGLE_API_SOURCE_NAME: l'ID o l'identificatore completo della risorsa GoogleApiSource
    • REGION: la posizione della risorsa GoogleApiSource
    • BUS_NAME: l'ID o l'identificatore completo del bus per cui vuoi abbonarti agli eventi dell'API Google
    • BUS_PROJECT_ID: l' Google Cloud ID progetto per il bus
    • LIST_OF_PROJECTS: un elenco separato da virgole di Google Cloud ID progetto o numeri di progetto. Puoi combinare ID e numeri nello stesso elenco. Per pubblicare eventi dal progettoGoogle Cloud contenente la risorsa GoogleApiSource, devi includere esplicitamente l'ID o il numero del progetto nell'elenco.

Passaggi successivi