Google 소스에서 이벤트 게시

GoogleApiSource 리소스를 만들어 특정 Eventarc Advanced 버스에 대해 Google 소스의 이벤트 수집 및 게시를 사용 설정할 수 있습니다.

Google 소스의 이벤트는 Cloud Run 함수 생성 또는 Dataflow 작업의 상태 변경과 같은 중재되지 않은 이벤트에 의해 직접 트리거됩니다. 자세한 내용은 Eventarc에서 지원되는 Google 이벤트 유형을 참조하세요.

다음에 유의하세요.

  • 기본적으로 이벤트는 GoogleApiSource 리소스가 있는 Google Cloud 프로젝트에서 수집됩니다. gcloud CLI를 사용하여 GoogleApiSource 리소스와 동일한 조직에 있는 여러 프로젝트에서 이벤트를 수집할 수도 있습니다. 자세한 내용은 이 문서에서 여러 프로젝트에서 이벤트 게시를 참고하세요.
  • GoogleApiSource 리소스가 있는 프로젝트와 다른 Google Cloud 프로젝트에 있는 버스에 이벤트를 게시할 수 있습니다. gcloud CLI를 사용하거나 Eventarc API에 요청을 전송하여 이를 구성할 수 있습니다 ( Google Cloud 콘솔을 통해서는 안 됨).
  • 리전별 프로젝트당 GoogleApiSource 리소스가 하나로 제한됩니다. Google Cloud

시작하기 전에

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

  1. Google Cloud CLI를 사용하여 이 페이지의 명령어를 실행하는 경우 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

  2. Eventarc APIEventarc Publishing API를 사용 설정합니다.

    콘솔

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    gcloud

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Google 소스에서 이벤트 사용 설정

Google 소스에서 이벤트를 게시하려면 GoogleApiSource 리소스를 만들어야 합니다. 이 리소스는 특정 Eventarc Advanced 버스에 대한 특정 Google Cloud 프로젝트의 Google API 이벤트 구독을 나타냅니다.

다음과 같은 방법으로 Google 소스에서 이벤트 게시를 사용 설정할 수 있습니다.

  • Google Cloud 콘솔에서 다음을 수행합니다.
  • 터미널 또는 Cloud Shell에서 Google Cloud CLI 사용
  • Eventarc API에 요청을 전송하는 경우

콘솔

  1. Google Cloud 콘솔에서 Eventarc > 버스 페이지로 이동합니다.

    버스로 이동

  2. 버스를 만들거나 버스를 업데이트하는 경우 수정을 클릭합니다.

  3. 버스 수정 페이지에서 메시지 소스를 추가하려면 소스 추가를 클릭합니다.

    1. 메시지 소스 추가 창에서 Google API 메시지 제공업체의 경우 기본값인 google-api-source를 사용하거나 다른 메시지 소스 이름을 입력합니다.
    2. 만들기를 클릭합니다.
  4. 저장을 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. gcloud eventarc google-api-sources create 명령어를 사용하여 Google 소스의 이벤트를 사용 설정할 수 있습니다.

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID

    다음을 바꿉니다.

    • GOOGLE_API_SOURCE_NAME: 특정 버스의 Google API 이벤트 구독을 나타내는 GoogleApiSource 리소스의 ID 또는 정규화된 식별자입니다.
    • BUS_NAME: Google API 이벤트를 구독하려는 버스의 ID 또는 정규화된 식별자입니다.
    • BUS_PROJECT_ID: 버스의 Google Cloud 프로젝트 ID입니다.

    선택사항: 다음 플래그를 사용할 수도 있습니다.

    • --async를 사용하여 진행 중인 작업이 완료되기를 기다리지 않고 명령어에서 즉시 반환합니다.
    • --crypto-key: 고객 관리 암호화 키의 정규화된 이름을 지정합니다. 지정하지 않으면 Google-owned and managed keys 가 사용됩니다.
    • --logging-config: 로깅 수준을 구성합니다. 로깅 수준은 NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY 중 하나여야 합니다. 자세한 내용은 LogSeverity를 참조하세요.

REST API

Google 소스의 이벤트를 사용 설정하려면 projects.locations.googleApiSources.create 메서드를 사용합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • GOOGLE_API_SOURCE_NAME: 특정 버스의 Google API 이벤트 구독을 나타내는 GoogleApiSource 리소스의 표시 이름입니다(예: my_google_source).
  • LABEL_KEYLABEL_VALUE: (선택사항) Google Cloud 리소스를 구성하는 데 도움이 되는 라벨 키 및 값 쌍의 맵입니다. 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.
  • ANNOTATION_KEYANNOTATION_VALUE: (선택사항) 자유 형식 텍스트의 주석 키 및 값 쌍의 맵입니다. 이를 사용하여 리소스와 연결된 임의의 정보를 연결할 수 있습니다. 자세한 내용은 주석을 참조하세요.
  • DESTINATION: Google 소스 이벤트를 게시해야 하는 Eventarc Advanced 버스의 정규화된 식별자입니다. 형식은 projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME입니다. 자세한 내용은 메시지 라우팅을 위한 버스 만들기를 참조하세요.
  • ENCRYPT_KEY: 선택사항입니다. GoogleApiSource 리소스가 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 데이터 암호화에 사용해야 하는 Cloud KMS 키입니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.
  • PROJECT_ID: GoogleApiSource 리소스를 만들 Google Cloud프로젝트 ID입니다.
  • LOCATION: GoogleApiSource 리소스를 만들 지원되는 리전(예: us-central1)입니다.
  • LOG_SEVERITY: 선택사항입니다. 로그 항목에 설명된 이벤트의 최소 심각도입니다. NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY 중 하나입니다. 기본값은 NONE입니다. 자세한 내용은 LogSeverity를 참조하세요.

JSON 요청 본문:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공한 경우 응답 본문에 새로 생성된 Operation 인스턴스가 포함됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

이제 GoogleApiSource 리소스와 동일한 Google Cloud 프로젝트에 있는 Google 소스의 이벤트가 수집되어 버스에 게시됩니다.

Google 소스에서 이벤트 사용 중지

특정Google Cloud 프로젝트에서 Eventarc Advanced 버스로 Google 소스의 이벤트 게시를 사용 중지하려면 GoogleApiSource 리소스를 삭제해야 합니다.

다음과 같은 방법으로 Google 소스에서 이벤트 게시를 사용 중지할 수 있습니다.

  • Google Cloud 콘솔에서 다음을 수행합니다.
  • 터미널 또는 Cloud Shell에서 gcloud CLI 사용
  • Eventarc API에 요청을 전송하는 경우

콘솔

  1. Google Cloud 콘솔에서 Eventarc > 버스 세부정보 페이지로 이동합니다.

    버스 세부정보로 이동

  2. 수정을 클릭합니다.

  3. 버스 수정 페이지에서 Google API 메시지 제공업체를 삭제하려면 google-api-source 메시지 소스(또는 지정한 이름)의 리소스 삭제를 클릭합니다.

  4. 리소스 삭제 프롬프트에서 확인을 클릭합니다.

  5. 저장을 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. gcloud eventarc google-api-sources delete 명령어를 사용하여 Google 소스의 이벤트를 사용 중지할 수 있습니다.

    gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    다음을 바꿉니다.

    • GOOGLE_API_SOURCE_NAME: GoogleApiSource 리소스의 ID 또는 정규화된 식별자
    • REGION: GoogleApiSource 리소스의 위치입니다.

REST API

Google 소스의 이벤트를 사용 중지하려면 projects.locations.googleApiSources.delete 메서드를 사용합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: GoogleApiSource 리소스가 생성되는 Google Cloud 프로젝트 ID입니다.
  • LOCATION: GoogleApiSource 리소스가 생성되는 리전(예: us-central1)
  • GOOGLE_API_SOURCE_NAME: 삭제하려는 GoogleApiSource 리소스의 이름입니다.

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공한 경우 응답 본문에 새로 생성된 Operation 인스턴스가 포함됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

삭제된 GoogleApiSource 리소스와 동일한 Google Cloud 프로젝트에 있는 Google 소스의 이벤트가 더 이상 수집되고 게시되지 않습니다.

여러 프로젝트에서 이벤트 게시

여러 Google Cloud 프로젝트에서 Google 소스 이벤트를 수집하고 게시하려면 GoogleApiSource 리소스를 만들어야 하며 프로젝트가 GoogleApiSource 리소스와 동일한 조직에 있어야 합니다. 조직에 대한 자세한 내용은 리소스 계층 구조를 참고하세요.

다음에 유의하세요.

  • 여러 프로젝트의 이벤트 게시를 구성하려면 gcloud CLI를 사용해야 하며 Google Cloud 콘솔에는 표시되지 않습니다.
  • GoogleApiSource 리소스가 포함된 프로젝트를 다른 조직으로 이동하면 여러 프로젝트에서 이벤트를 게시하는 기능이 더 이상 예상대로 작동하지 않습니다. GoogleApiSource 리소스를 업데이트하거나 다시 만들어야 합니다.

1. Eventarc 서비스 에이전트에 적절한 IAM 역할 부여

조직 수준에서 이벤트를 수집하려면 gcloud organizations add-iam-policy-binding 명령어를 사용하여 Eventarc 서비스 에이전트에게 적절한 Identity and Access Management (IAM) 역할을 부여하세요.

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="SERVICE_AGENT_EMAIL" \
    --role="roles/eventarc.multiProjectEventCollector"

다음을 바꿉니다.

  • ORGANIZATION_ID: 조직 리소스 ID입니다.
  • SERVICE_AGENT_EMAIL: GoogleApiSource 리소스를 만드는 프로젝트의 Eventarc 기본 서비스 에이전트의 이메일 주소입니다. 이메일 주소는 다음 형식입니다.

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
    

    여기에서 PROJECT_NUMBER를Google Cloud 프로젝트 번호로 바꿉니다. Google Cloud 콘솔의 시작 페이지에서 또는 다음 명령어를 실행하여 프로젝트 번호를 찾을 수 있습니다.

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    

2. 모든 프로젝트 또는 프로젝트 목록에서 게시

여러 프로젝트에서 Google 소스의 이벤트를 게시하려면 다음 방법 중 하나로 gcloud eventarc google-api-sources create 명령어를 사용하세요.

  • GoogleApiSource 리소스와 동일한 조직의 모든 Google Cloud 프로젝트에서 게시합니다.

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --organization-subscription
  • GoogleApiSource 리소스와 동일한 조직의 Google Cloud 프로젝트 목록에서 게시합니다.

    gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \
        --location=REGION \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID \
        --project-subscriptions=LIST_OF_PROJECTS

    다음을 바꿉니다.

    • GOOGLE_API_SOURCE_NAME: GoogleApiSource 리소스의 ID 또는 정규화된 식별자
    • REGION: GoogleApiSource 리소스의 위치입니다.
    • BUS_NAME: Google API 이벤트를 구독하려는 버스의 ID 또는 정규화된 식별자입니다.
    • BUS_PROJECT_ID: 버스의 Google Cloud 프로젝트 ID입니다.
    • LIST_OF_PROJECTS:Google Cloud 프로젝트 ID 또는 프로젝트 번호의 쉼표로 구분된 목록입니다. 동일한 목록에서 ID와 숫자를 결합할 수 있습니다. GoogleApiSource 리소스가 포함된Google Cloud 프로젝트에서 이벤트를 게시하려면 목록에 프로젝트 ID 또는 번호를 명시적으로 포함해야 합니다.

다음 단계