이벤트 직접 게시

Google Cloud CLI를 사용하거나 Eventarc Publishing REST API에 요청을 전송하여 지원되는 형식으로 CloudEvents 이벤트를 Eventarc Advanced 버스에 직접 게시할 수 있습니다. Eventarc 클라이언트 라이브러리를 사용하여 지원되는 언어에서 Eventarc API에 액세스할 수도 있습니다.

시작하기 전에

시작하기 전에 다음 단계를 완료했는지 확인하세요.

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud CLI를 설치합니다.

  3. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  4. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  5. 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 프로젝트 이름으로 바꿉니다.

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. Eventarc 및 Eventarc Publishing API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
  8. Google Cloud CLI를 설치합니다.

  9. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  10. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  11. 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 프로젝트 이름으로 바꿉니다.

  12. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  13. 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

  1. 터미널을 엽니다.

  2. 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

{}

다음 단계