Sie können ein CloudEvents-Ereignis mit der Google Cloud CLI oder durch Senden einer Anfrage an die Eventarc Publishing REST API in einem unterstützten Format direkt in einem Eventarc Advanced-Bus veröffentlichen. Sie können auch die Eventarc-Clientbibliotheken verwenden, um in einer unterstützten Sprache auf die Eventarc APIs zuzugreifen.
Hinweise
Führen Sie die folgenden Schritte aus, bevor Sie beginnen:
- 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.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com Öffnen Sie ein Terminalfenster.
Sie können Ereignisse mit dem Befehl
gcloud eventarc message-buses publishin einem Bus veröffentlichen. Beispiel:oder:gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
oder:gcloud eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
gcloud eventarc message-buses publish BUS_NAME \ --event-data=DATA_PAYLOAD \ --event-id=EVENT_ID \ --event-source=EVENT_SOURCE \ --event-type=EVENT_TYPE \ --event-attributes=EVENT_ATTRIBUTE
Ersetzen Sie Folgendes:
BUS_NAME: die ID oder voll qualifizierte Kennzeichnung des Busses, in dem das Ereignis veröffentlicht werden soll.
Sie dürfen nur eines der folgenden Elemente verwenden:
AVRO_MESSAGE: Die Ereignismeldung im Avro-Format gemäß dieser Spezifikation.JSON_MESSAGE: die Ereignisnachricht im JSON-Format gemäß dieser Spezifikation.DATA_PAYLOAD: die Daten eines veröffentlichten Ereignisses.
Wenn Sie das Flag
--event-dataverwenden, müssen Sie auch Folgendes verwenden:EVENT_ID: die Ereignis-ID. Ereignisproduzenten müssen dafür sorgen, dasssource+idfür jedes einzelne Ereignis eindeutig ist.EVENT_SOURCE: Die Ereignisquelle eines veröffentlichten Ereignisses.EVENT_TYPE: Der Ereignistyp, der sich auf das ursprüngliche Ereignis bezieht.
Wenn Sie das Flag
--event-dataverwenden, können Sie optional Folgendes verwenden:EVENT_ATTRIBUTE: die Attribute eines veröffentlichten Ereignisses. Sie können das Flag--event-attributeswiederholen, um weitere Attribute hinzuzufügen.Ereignisse können beliebig viele zusätzliche benutzerdefinierte CloudEvents-Attribute mit unterschiedlichen Namen (auch als Erweiterungsattribute bezeichnet) enthalten.
- Der vollständige Ressourcenname des Busses im Format
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAMEErsetzen Sie Folgendes:
PROJECT_ID: die Google Cloud-Projekt-ID für das Bus-Projekt.LOCATION: die Region, in der der Bus bereitgestellt wird, z. B.us-central1.BUS_NAME: Der Name des Busses, an den das Ereignis gesendet werden soll.
SPEC_VERSION: Die Version der CloudEvents-Spezifikation, die für das Ereignis verwendet wird, z. B.1.0.EVENT_TYPE: Der Ereignistyp, der sich auf das ursprüngliche Ereignis bezieht.EVENT_SOURCE: die Ereignisquelle eines veröffentlichten Ereignisses.EVENT_ID: die Ereignis-ID. Feedersteller müssen dafür sorgen, dasssource+idfür jedes einzelne Event eindeutig ist.CONTENT_TYPE(optional): Der Inhaltstyp desdata-Werts. Wenn ein Ereignis im JSON-Format keindatacontenttype-Attribut hat, wird davon ausgegangen, dass die Daten ein JSON-Wert sind, der dem Medientypapplication/jsonentspricht.DATA_PAYLOAD(optional): Die Ereignisnutzlast, die in das durchdatacontenttypeangegebene Media-Format codiert ist unddataschemaentspricht, wenn diese Attribute vorhanden sind.- Ereignisse aus Google-Quellen veröffentlichen
- Empfangene Ereignisse transformieren
- Empfangene Ereignisse formatieren
Direkt veröffentlichen
Die Ereignisnachricht, die Sie direkt veröffentlichen, muss der CloudEvents-Spezifikation entsprechen.
gcloud
Beispiele:
gcloud eventarc message-buses publish my-bus \ --event-data='{"key": "hello-world-data"}' \ --event-id=hello-world-id-1234 \ --event-source=hello-world-source \ --event-type=hello-world-type \ --event-attributes="datacontenttype=application/json"
gcloud eventarc message-buses publish my-bus --json-message='{ "specversion" : "1.0", "type" :"com.example.someevent", "source" : "google.cloud.storage.object.v1.finalized", "id" : "A234-1234-1234", "time" : "2024-04-05T17:31:00Z", "bucket" : "bucketName", "datacontenttype" : "application/json", "data":{"key": "value"} }'
REST API
Verwenden Sie zum Veröffentlichen eines Ereignisses in einem Bus die Methode projects.locations.messageBuses.publish.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
JSON-Text der Anfrage:
{
"jsonMessage":
"{\"specversion\":\"SPEC_VERSION\",
\"type\":\"EVENT_TYPE\",
\"source\":\"EVENT_SOURCE\",
\"id\":\"EVENT_ID\",
\"datacontenttype\":\"CONTENT_TYPE\",
\"data\":\"DATA_PAYLOAD\"}"
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Bei Erfolg gibt der Server den HTTP-Statuscode 200 OK und den leeren Antworttext im JSON-Format zurück:
200 OK
{}