Google Cloud CLI를 사용하거나 Eventarc Publishing REST API에 요청을 전송하여 지원되는 형식으로 CloudEvents 이벤트를 Eventarc Advanced 버스에 직접 게시할 수 있습니다. Eventarc 클라이언트 라이브러리를 사용하여 지원되는 언어에서 Eventarc API에 액세스할 수도 있습니다.
시작하기 전에
시작하기 전에 다음 단계를 완료했는지 확인하세요.
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
Google Cloud 프로젝트를 만들거나 선택합니다.
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
-
Google Cloud 프로젝트를 만듭니다.
gcloud projects create PROJECT_ID
PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다. -
만든 Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_ID
PROJECT_ID을 Google Cloud 프로젝트 이름으로 바꿉니다.
Eventarc 및 Eventarc Publishing API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com -
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
Google Cloud 프로젝트를 만들거나 선택합니다.
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
-
Google Cloud 프로젝트를 만듭니다.
gcloud projects create PROJECT_ID
PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다. -
만든 Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_ID
PROJECT_ID을 Google Cloud 프로젝트 이름으로 바꿉니다.
Eventarc 및 Eventarc Publishing API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com
직접 게시
직접 게시하는 이벤트 메시지는 CloudEvents 사양을 준수해야 합니다.
gcloud
터미널을 엽니다.
gcloud eventarc message-buses publish명령어를 사용하여 버스에 이벤트를 게시할 수 있습니다. 예를 들면 다음과 같습니다.또는gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
또는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
다음을 바꿉니다.
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 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
버스에 이벤트를 게시하려면 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
{}