Google Cloud CLI를 사용하거나 Eventarc 게시 REST API에 요청을 전송하여 지원되는 형식으로 CloudEvents 이벤트를 Eventarc 고급 버스에 직접 게시할 수 있습니다. Eventarc 클라이언트 라이브러리를 사용하여 지원되는 언어에서 Eventarc API에 액세스할 수도 있습니다.
메시지는 CloudEvents 사양을 준수해야 합니다.
gcloud
터미널을 엽니다.
gcloud beta eventarc message-buses publish
명령어를 사용하여 버스에 이벤트를 게시할 수 있습니다. 예를 들면 다음과 같습니다.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
다음을 바꿉니다.
BUS_NAME
: 이벤트를 게시할 버스의 ID 또는 정규화된 식별자입니다.
다음 중 하나만 사용해야 합니다.
AVRO_MESSAGE
: 이 사양에 따라 Avro 형식의 이벤트 메시지입니다.JSON_MESSAGE
: 이 사양에 따른 JSON 형식의 이벤트 메시지입니다.DATA_PAYLOAD
: 게시된 이벤트의 데이터입니다.
--event-data
플래그를 사용하는 경우 다음도 사용해야 합니다.EVENT_ID
: 이벤트 식별자입니다. 이벤트 생산자는source
+id
가 고유한 이벤트마다 고유해야 합니다.EVENT_SOURCE
: 게시된 이벤트의 이벤트 소스입니다.EVENT_TYPE
: 원래 발생과 관련된 이벤트 유형입니다.
--event-data
플래그를 사용하는 경우 원하는 경우 다음을 사용할 수 있습니다.EVENT_ATTRIBUTE
: 게시된 이벤트의 속성입니다.--event-attributes
플래그를 반복하여 속성을 더 추가할 수 있습니다.이벤트에는 고유한 이름을 가진 맞춤 CloudEvents 속성 (확장 속성이라고도 함)이 여러 개 포함될 수 있습니다.
예:
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
버스에 이벤트를 게시하려면 projects.locations.messageBuses.publish
메서드를 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
형식의 버스의 전체 리소스 이름입니다.다음을 바꿉니다.
PROJECT_ID
: 버스 프로젝트의 Google Cloud 프로젝트 ID입니다.LOCATION
: 버스가 배포되는 리전입니다(예:us-central1
).BUS_NAME
: 이벤트를 게시할 버스의 이름입니다.
SPEC_VERSION
: 이벤트에서 사용하는 CloudEvents 사양 버전입니다(예:1.0
).EVENT_TYPE
: 원래 발생과 관련된 이벤트 유형입니다.EVENT_SOURCE
: 게시된 이벤트의 이벤트 소스입니다.EVENT_ID
: 이벤트 식별자입니다. 제작자는source
+id
가 고유한 이벤트마다 고유해야 합니다.CONTENT_TYPE
(선택사항):data
값의 콘텐츠 유형입니다. JSON 형식 이벤트에datacontenttype
속성이 없으면 데이터가application/json
미디어 유형을 준수하는 JSON 값이라고 가정됩니다.DATA_PAYLOAD
(선택사항):datacontenttype
로 지정된 미디어 형식으로 인코딩되고 이러한 속성이 있는 경우dataschema
를 준수하는 이벤트 페이로드입니다.
JSON 요청 본문:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION\", \"type\":\"EVENT_TYPE\", \"source\":\"EVENT_SOURCE\", \"id\":\"EVENT_ID\", \"datacontenttype\":\"CONTENT_TYPE\", \"data\":\"DATA_PAYLOAD\"}" }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공하면 서버는 HTTP 200 OK
상태 코드와 JSON 형식의 빈 응답 본문을 반환합니다.
200 OK {}