You can publish a CloudEvents event directly to an Eventarc Advanced bus in a supported format using the Google Cloud CLI or by sending a request to the Eventarc Publishing REST API. You can also use the Eventarc client libraries to access the Eventarc APIs from a supported language.
The message must conform to the CloudEvents specification.
gcloud
Open a terminal.
You can publish events to a bus by using the
gcloud beta eventarc message-buses publish
command. For example:gcloud beta eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
gcloud beta eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
gcloud beta 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
Replace the following:
BUS_NAME
: the ID or fully qualified identifier of the bus to which to publish the event.
You must use only one of the following:
AVRO_MESSAGE
: the event message in an Avro format according to this specification.JSON_MESSAGE
: the event message in a JSON format according to this specification.DATA_PAYLOAD
: the data of a published event.
If using the
--event-data
flag, you must also use the following:EVENT_ID
: the event identifier. Event producers must ensure thatsource
+id
is unique for each distinct event.EVENT_SOURCE
: the event source of a published event.EVENT_TYPE
: the type of event related to the originating occurrence.
If using the
--event-data
flag, you can optionally use the following:EVENT_ATTRIBUTE
: the attributes of a published event. You can repeat the--event-attributes
flag to add more attributes.Note that events might include any number of additional custom CloudEvents attributes with distinct names (also known as extension attributes).
Examples:
gcloud beta eventarc message-buses publish my-bus \ --event-id=1234 \ --event-type=event-provider.event.v1.eventType \ --event-source="//event-provider/event/source" \ --event-data='{"key": "value"}' \ --event-attributes=attribute1=value
gcloud beta eventarc message-buses publish my-bus --json-message @- << EOF { "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"} } EOF
REST API
To publish an event to a bus, use the
projects.locations.messageBuses.publish
method.
Before using any of the request data, make the following replacements:
- The full resource name of the bus in the format
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Replace the following:
PROJECT_ID
: the Google Cloud project ID for the bus project.LOCATION
: the region in which the bus is deployed—for example,us-central1
.BUS_NAME
: the name of the bus to which to publish the event.
SPEC_VERSION
: the version of the CloudEvents specification which the event uses—for example,1.0
.EVENT_TYPE
: the type of event related to the originating occurrence.EVENT_SOURCE
: the event source of a published event.EVENT_ID
: the event identifier. Producers must ensure thatsource
+id
is unique for each distinct event.CONTENT_TYPE
(optional): the content type ofdata
value. If a JSON format event has nodatacontenttype
attribute, then it is assumed that the data is a JSON value conforming to theapplication/json
media type.DATA_PAYLOAD
(optional): the event payload encoded into the media format specified bydatacontenttype
and adhering todataschema
when those attributes are present.
Request JSON body:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION\", \"type\":\"EVENT_TYPE\", \"source\":\"EVENT_SOURCE\", \"id\":\"EVENT_ID\", \"datacontenttype\":\"CONTENT_TYPE\", \"data\":\"DATA_PAYLOAD\"}" }
To send your request, expand one of these options:
If successful, the server returns an HTTP 200 OK
status code and the empty response
body in JSON format:
200 OK {}