이벤트를 VPC 네트워크의 내부 HTTP 엔드포인트로 라우팅

Eventarc 트리거는 특정 이벤트 또는 이벤트 집합에 관심이 있음을 선언합니다. 이벤트 소스 및 타겟 대상을 포함하여 트리거에 대해 필터를 지정하여 이벤트 라우팅을 구성할 수 있습니다.

Eventarc는 HTTP 요청을 통해 이벤트를 CloudEvents 형식으로 이벤트 수신자에게 전달합니다.

이 안내에서는 가상 프라이빗 클라우드(VPC) 네트워크에서 내부 HTTP 엔드포인트에 대해 모든 이벤트 유형의 이벤트 라우팅을 구성하는 방법을 보여줍니다. 트리거를 구성하려면 네트워크 연결 ID도 제공해야 합니다.

  • 지원되는 이벤트 유형은 다음과 같습니다.

    • 직접 이벤트 — Cloud Storage 버킷의 객체 업데이트 또는 Pub/Sub 주제에 게시된 메시지와 같이 미디에이션되지 않은 데이터로 트리거됩니다.

    • Cloud 감사 로그 이벤트 — Cloud 감사 로그를 통해 로그가 생성될 때 트리거됩니다.

    • 서드 파티 이벤트 — Eventarc 소스를 제공하는 Google 이외의 제공자 이벤트에 의해 트리거됩니다.

  • 내부 HTTP 엔드포인트는 가상 프라이빗 클라우드(VPC) 네트워크의 HTTP 엔드포인트에 대한 내부 IP 주소 또는 정규화된 DNS 이름(FQDN)일 수 있습니다. 다음은 두 가지 가능한 이벤트 대상 예시입니다.

    • Compute Engine 가상 머신(VM) 인스턴스 — Compute Engine 인스턴스는 기존 시스템에서 만들거나 가져올 수 있는 비공개 커스텀 이미지뿐만 아니라 Google에서 제공하는 Linux 및 Windows Server용 공개 이미지를 실행할 수 있습니다. 자세한 내용은 가상 머신 인스턴스를 참조하세요.
    • 내부 부하 분산기 — Google Cloud 내부 애플리케이션 부하 분산기는 내부 IP 주소를 기반으로 서비스를 실행 및 확장할 수 있게 해주는 프록시 기반의 리전 레이어 7 부하 분산기입니다. 내부 애플리케이션 부하 분산기는 HTTP 및 HTTPS 트래픽을 Compute Engine, Google Kubernetes Engine(GKE) 및 Cloud Run에서 호스팅되는 백엔드에 배포합니다. 자세한 내용은 내부 애플리케이션 부하 분산기 개요를 참조하세요.
  • VPC 네트워크는 Google의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상 버전입니다. 공유 VPC 네트워크호스트 프로젝트에 정의된 VPC 네트워크이며 연결된 서비스 프로젝트에서 요건을 충족하는 리소스의 중앙 공유 네트워크로 사용할 수 있습니다.

  • 네트워크 연결은 프로듀서가 소비자 VPC 네트워크에 연결하도록 명시적으로 권한을 부여할 수 있게 해주는 리전 리소스입니다. 이벤트를 게시하기 위해 Eventarc는 네트워크 연결을 사용해서 VPC 네트워크에 호스팅되는 내부 HTTP 엔드포인트에 대해 연결을 설정합니다.

시작하기 전에

VPC 네트워크에서 이벤트를 내부 HTTP 엔드포인트로 라우팅하도록 Eventarc 트리거를 만들려면 먼저 HTTP 대상 서비스가 포함된 동일한 네트워크 및 리전에서 연결을 수락하는 네트워크 연결을 만들어야 합니다.

이 안내에서는 VPC 네트워크 및 서브네트워크를 이미 만들었고 HTTP 대상 서비스를 배포했다고 가정합니다.

자세한 내용은 VPC 네트워크에서 내부 HTTP 엔드포인트를 배포하고 엔드포인트에 Pub/Sub 이벤트를 라우팅하는 방법을 보여주는 VPC 네트워크의 내부 HTTP 엔드포인트에서 Pub/Sub 이벤트 수신을 참조하세요.

알려진 제한사항

다음은 VPC 네트워크에서 내부 HTTP 엔드포인트로 이벤트를 라우팅할 때 알려진 제한사항에 대한 설명입니다.

  • 동일한 DNS 이름에 대해 Eventarc 트리거를 두 개 이상 만들 수 없습니다.

  • 프로젝트당 내부 HTTP 엔드포인트에는 Eventarc 트리거가 100개로 제한됩니다.

  • 다음 Eventarc 트리거 위치만 지원됩니다.

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

트리거 만들기 준비

트리거를 만들기 전에 다음 기본 요건을 충족하세요.

콘솔

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 만들거나 선택합니다.

    프로젝트 선택자로 이동

  2. Cloud Logging 및 Eventarc API를 사용 설정합니다.

    API 사용 설정

  3. 해당하는 경우 직접 이벤트와 관련된 API를 사용 설정합니다. 예를 들어 Cloud Functions 이벤트의 경우 cloudfunctions.googleapis.com을 사용 설정합니다.

  4. 아직 계정이 없는 경우 사용자 관리형 서비스 계정을 만들고 Eventarc에서 대상 서비스의 이벤트를 관리할 수 있도록 필요한 역할과 권한을 계정에 부여합니다.

    1. Google Cloud 콘솔에서 서비스 계정 만들기 페이지로 이동합니다.

      서비스 계정 만들기로 이동

    2. 프로젝트를 선택합니다.

    3. 서비스 계정 이름 필드에 이름을 입력합니다. Google Cloud 콘솔은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

      서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면 Service account for event trigger입니다.

    4. 만들고 계속하기를 클릭합니다.

    5. 적절한 액세스 권한을 제공하기 위해 역할 선택 목록에서 서비스 계정에 부여할 필요한 Identity and Access Management(IAM) 역할을 선택합니다. 자세한 내용은 VPC 네트워크에서 내부 HTTP 엔드포인트의 역할 및 권한을 참조하세요.

      역할을 추가하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.

    6. 계속을 클릭합니다.

    7. 계정 만들기를 마치려면 완료를 클릭합니다.

  5. Cloud Storage에서 직접 이벤트에 대한 트리거를 만드는 경우 Pub/Sub 게시자 역할(roles/pubsub.publisher)을 Cloud Storage 서비스 에이전트에 부여합니다.

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동

    2. Google 제공 역할 부여 포함 체크박스를 선택합니다.

    3. 주 구성원 열에서 service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com 형식의 Cloud Storage 서비스 에이전트를 찾은 후 해당 행에서 주 구성원 수정을 클릭합니다.

    4. 역할 추가 또는 다른 역할 추가를 클릭합니다.

    5. 역할 선택 목록에서 Pub/Sub 게시자를 필터링한 다음 역할을 선택합니다.

    6. 저장을 클릭합니다.

  6. VPC 네트워크의 내부 HTTP 엔드포인트의 URI가 Cloud DNS에서 확인할 수 있는 서비스의 내부 DNS 이름을 사용하는 경우, Eventarc 서비스 에이전트에 VPC 호스트 프로젝트에 대한 DNS 피어 역할(roles/dns.peer)을 부여하세요.

    VPC 네트워크 구성 방법에 따라 VPC 호스트 프로젝트가 Eventarc 트리거 프로젝트일 수도 있습니다.

    1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 VPC 호스트 프로젝트를 선택합니다.

      프로젝트 선택자로 이동

    2. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동

    3. Google 제공 역할 부여 포함 체크박스를 선택합니다.

    4. Eventarc 서비스 에이전트를 주 구성원으로 수정하거나 추가합니다.

      • Eventarc 서비스 에이전트에 이미 프로젝트에 대한 다른 역할이 있는 경우 service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com 형식에서 주 구성원이 포함된 행을 찾아, 해당 행의 주 구성원 수정을 클릭하고 다른 역할 추가를 클릭합니다.

      • Eventarc 서비스 에이전트에 프로젝트에 기존 역할이 없는 경우 액세스 권한 부여를 클릭한 후 service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com 형식으로 이메일 주소를 입력합니다.

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

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    5. 역할 선택 목록에서 DNS 피어를 필터링한 다음 역할을 선택합니다.

    6. 저장을 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  2. Cloud Logging, Eventarc, Eventarc Publishing API를 사용 설정합니다.

    gcloud services enable logging.googleapis.com \
      eventarc.googleapis.com \
      eventarcpublishing.googleapis.com
    
  3. 해당하는 경우 이벤트와 관련된 API를 사용 설정합니다. 예를 들어 Cloud Functions 이벤트의 경우 cloudfunctions.googleapis.com을 사용 설정합니다.

  4. 아직 계정이 없는 경우 사용자 관리형 서비스 계정을 만들고 Eventarc가 대상 서비스의 이벤트를 관리할 수 있도록 필요한 역할과 권한을 계정에 부여합니다.

    1. 서비스 계정을 만듭니다.

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      

      SERVICE_ACCOUNT_NAME을 서비스 계정 이름으로 바꿉니다. 6~30자(영문 기준) 사이여야 하며 소문자 영숫자 문자와 대시를 포함할 수 있습니다. 서비스 계정을 만든 후에는 이름을 변경할 수 없습니다.

    2. 필요한 Identity and Access Management(IAM) 역할 또는 권한을 부여합니다. 자세한 내용은 VPC 네트워크에서 내부 HTTP 엔드포인트의 역할 및 권한을 참조하세요.

  5. VPC 네트워크의 내부 HTTP 엔드포인트의 URI가 Cloud DNS에서 확인할 수 있는 서비스의 내부 DNS 이름을 사용하는 경우, Eventarc 서비스 에이전트에 VPC 호스트 프로젝트에 대한 DNS 피어 역할(roles/dns.peer)을 부여하세요.

    VPC 네트워크 구성 방법에 따라 VPC 호스트 프로젝트가 Eventarc 트리거 프로젝트일 수도 있습니다.

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    다음을 바꿉니다.

    • VPC_HOST_PROJECT_ID: VPC 호스트 프로젝트의 Google Cloud 프로젝트 ID.
    • PROJECT_NUMBER: Eventarc 트리거 프로젝트의 Google Cloud 프로젝트 번호. Google Cloud 콘솔의 시작 페이지에서 또는 다음 명령어를 실행하여 프로젝트 번호를 찾을 수 있습니다.
    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  6. Cloud Storage에서 직접 이벤트에 대한 트리거를 만드는 경우 클러스터에 Cloud Storage 서비스 에이전트에 프로젝트의 Pub/Sub 게시자 역할(roles/pubsub.publisher)을 부여합니다.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

트리거 만들기

Google Cloud CLI를 사용하거나 Google Cloud 콘솔을 통해 Eventarc 트리거를 만들 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Eventarc 트리거 페이지로 이동합니다.

    트리거로 이동

  2. 트리거 만들기를 클릭합니다.
  3. 트리거 이름을 입력합니다.

    트리거의 ID이며 문자로 시작해야 합니다. 최대 63자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다.

  4. 트리거 유형으로 Google 소스 또는 타사를 선택합니다.
  5. 이벤트 제공자를 선택합니다.

    이는 이벤트 소스인 서비스입니다. Google 소스의 경우 직접 또는 감사 로그를 통한 이벤트입니다.

  6. 라우팅 중인 이벤트 유형에 따라 다음 중 하나를 수행합니다.
    1. 직접 이벤트 — 이벤트 유형 목록의 직접 이벤트에서 이벤트 유형을 선택합니다.
      1. 직접 Cloud Pub/Sub 이벤트의 경우 Cloud Pub/Sub 주제 선택 목록에서 주제를 선택하거나 기본값인 없음을 그대로 수락하여 새 주제를 자동으로 만듭니다.
      2. 직접 Cloud Storage 이벤트의 경우 Cloud Storage 버킷의 전역적으로 고유한 식별자를 지정하거나 찾습니다.
    2. 감사 로그 이벤트 — 이벤트 유형 목록의 Cloud 감사 로그 사용 이벤트에서 이벤트 유형을 선택한 후 다음 중 하나를 선택합니다.
      • 모든 리소스 — 기본값이며 생성 시 생성된 식별자가 있는 동적으로 생성된 리소스를 포함합니다.
      • 특정 리소스 — 전체 리소스 이름을 제공해야 합니다.
      • 경로 패턴경로 패턴을 사용하여 리소스를 필터링할 수 있습니다. 예를 들어 projects/_/buckets/eventarc-bucket/objects/random.txt 또는 projects/_/buckets/**/r*.txt를 입력합니다.
    3. 타사 이벤트 — 채널 목록에서 채널을 선택한 후 이벤트 유형 목록에서 이벤트를 선택합니다.

      자세한 내용은 채널 만들기 및 세부정보 검색을 참조하세요.

  7. 이벤트 유형에 적용 가능한 경우 이벤트 데이터 콘텐츠 유형 목록에서 application/json 또는 application/protobuf를 선택하여 이벤트 페이로드의 인코딩을 지정합니다.

    JSON으로 형식이 지정된 이벤트 페이로드는 Protobuf로 형식이 지정된 이벤트 페이로드보다 큽니다. 그로 인해 이벤트 대상 및 이벤트 크기 한도에 따라 안정성에 영향을 미칠 수 있습니다. 자세한 내용은 알려진 문제를 참조하세요.

  8. 이벤트 제공자에 해당하는 경우 필터 추가를 클릭하고 다음을 지정합니다.
    1. 속성 1 필드에서 선택한 직접 이벤트에 따라 이벤트 필터 역할을 할 수 있는 리소스 ID를 선택합니다.
    2. 연산자를 선택합니다.
    3. 속성 값 1 필드에서 선택한 연산자에 따라 정확한 값을 입력하거나 경로 패턴을 적용합니다.
    4. 속성 2 필드를 적용할 수 있는 경우 적절한 값을 지정합니다.
  9. 리전 목록에서 위치를 선택합니다.

    성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다.

    이 이벤트 대상에는 다음 위치만 지원됩니다.

    • asia-east1
    • europe-north1
    • europe-west1
    • us-east1

    자세한 내용은 Eventarc 위치를 참조하세요.

  10. 서비스를 호출할 서비스 계정을 선택합니다.

    또는 새 서비스 계정을 만들 수 있습니다.

    트리거와 연결되어 있고 이전에 Eventarc에 필요한 특정 역할을 부여한 IAM 서비스 계정 이메일을 지정합니다.

  11. 이벤트 대상 목록에서 HTTP 엔드포인트(내부)를 선택합니다.
    1. 대상 URI를 지정합니다. VPC 네트워크에서 트리거의 이벤트를 수신하는 내부 HTTP 엔드포인트의 URI입니다. URI는 네트워크 연결로 확인된 VPC 네트워크의 고정 내부 IP 주소 또는 Cloud DNS로 확인할 수 있는 서비스의 내부 DNS 이름일 수 있습니다.

      HTTP 엔드포인트에 내부 DNS 이름이 사용되는 경우 Eventarc는 DNS 피어링 영역을 자동으로 만들고 DNS 요청을 대상 VPC 네트워크의 DNS 영역으로 전달합니다. DNS 피어링을 사용하면 한 영역의 네임스페이스에 있는 레코드의 요청을 다른 VPC 네트워크에 전달할 수 있습니다. 자세한 내용은 피어링 영역피어링 영역 만들기를 참조하세요.

      동일한 DNS 이름에는 트리거를 둘 이상 만들 수 없습니다.

    2. 네트워크 연결 목록에서 네트워크 연결 리소스의 식별자를 선택합니다. 이 식별자는 네트워크 연결을 만든 후에 생성됩니다. 자세한 내용은 네트워크 연결 만들기를 참조하세요.

      네트워크 연결을 사용하면 서비스 프로듀서 VPC 네트워크에서 소비자 VPC 네트워크에 대한 연결을 시작할 수 있습니다. Eventarc는 네트워크 연결을 사용해서 소비자의 VPC 네트워크에 호스팅된 내부 HTTP 엔드포인트에 대해 연결을 설정하고 이벤트를 게시합니다.

      네트워크 연결을 만들 때는 프로듀서 수락 및 거부 목록을 통해 연결을 명시적으로 승인할 수 있습니다. 그럼에도 불구하고 Eventarc는 사용자 개입 없이 적절한 프로젝트 ID를 사용해서 네트워크 연결 허용 목록을 업데이트할 수 있습니다.

  12. 만들기를 클릭합니다.
  13. 트리거가 생성된 후에는 이벤트 소스 필터를 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다. 자세한 내용은 트리거 관리를 참조하세요.

gcloud

필수 및 선택적 플래그와 함께 gcloud eventarc triggers create 명령어를 실행하여 트리거를 만들 수 있습니다.

직접 이벤트

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="COLLECTION_ID=RESOURCE_ID" \
    --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자입니다.
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1).

    성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다.

    이 이벤트 대상에는 다음 위치만 지원됩니다.

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    자세한 내용은 Eventarc 위치를 참조하세요.

  • ENDPOINT_URI: VPC 네트워크에서 트리거의 이벤트를 수신하는 내부 HTTP 엔드포인트의 URI입니다. URI는 네트워크 연결로 확인된 VPC 네트워크의 고정 내부 IP 주소 또는 Cloud DNS로 확인할 수 있는 서비스의 내부 DNS 이름일 수 있습니다.

    HTTP 엔드포인트에 내부 DNS 이름이 사용되는 경우 Eventarc는 DNS 피어링 영역을 자동으로 만들고 DNS 요청을 대상 VPC 네트워크의 DNS 영역으로 전달합니다. DNS 피어링을 사용하면 한 영역의 네임스페이스에 있는 레코드의 요청을 다른 VPC 네트워크에 전달할 수 있습니다. 자세한 내용은 피어링 영역피어링 영역 만들기를 참조하세요.

    동일한 DNS 이름에는 트리거를 둘 이상 만들 수 없습니다.

  • NETWORK_ATTACHMENT_ID: 네트워크 연결 리소스의 고유 식별자입니다. 식별자는 네트워크 연결을 만든 후에 생성됩니다. 자세한 내용은 네트워크 연결 만들기를 참조하세요.

    네트워크 연결을 사용하면 서비스 프로듀서 VPC 네트워크에서 소비자 VPC 네트워크에 대한 연결을 시작할 수 있습니다. Eventarc는 네트워크 연결을 사용해서 소비자의 VPC 네트워크에 호스팅된 내부 HTTP 엔드포인트에 대해 연결을 설정하고 이벤트를 게시합니다.

    네트워크 연결을 만들 때는 프로듀서 수락 및 거부 목록을 통해 연결을 명시적으로 승인할 수 있습니다. 그럼에도 불구하고 Eventarc는 사용자 개입 없이 적절한 프로젝트 ID를 사용해서 네트워크 연결 허용 목록을 업데이트할 수 있습니다.

  • EVENT_FILTER_TYPE: 이벤트의 식별자입니다. 메서드의 API 호출이 성공하면 이벤트가 생성됩니다. 장기 실행 작업의 경우 작업이 끝날 때 작업이 성공적으로 완료된 경우에만 이벤트가 생성됩니다. 지원되는 직접 이벤트 유형 목록을 참조하세요.

  • COLLECTION_ID(선택사항): 이벤트 필터로 작동할 수 있는 리소스 구성요소입니다. 예를 들어 Cloud Functions의 경우 function입니다.

  • RESOURCE_ID: 연결된 컬렉션의 필터링 값으로 사용되는 리소스의 식별자입니다. 자세한 내용은 리소스 ID를 참조하세요.

  • PATH_PATTERN: 리소스를 필터링할 때 적용할 경로 패턴입니다.

  • SERVICE_ACCOUNT_NAME: 사용자 관리형 서비스 계정의 이름입니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

참고:

  • --event-filters="type=EVENT_FILTER_TYPE" 플래그는 필수사항입니다. 다른 이벤트 필터가 설정되지 않으면 모든 리소스의 이벤트가 일치합니다.
  • 생성 후에는 EVENT_FILTER_TYPE을 변경할 수 없습니다. EVENT_FILTER_TYPE을 변경하려면 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,...] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다. 그러나 --event-filters-path-pattern 플래그를 사용하면 리소스 경로 패턴을 정의할 수 있습니다.
  • --service-account 플래그는 트리거와 연결된 IAM 서비스 계정 이메일을 지정하는 데 사용됩니다.

예를 들면 다음과 같습니다.

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

감사 로그 이벤트

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자입니다.
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1).

    성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다. 다음 위치가 지원됩니다.

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    자세한 내용은 Eventarc 위치를 참조하세요.

  • ENDPOINT_URI: VPC 네트워크에서 트리거의 이벤트를 수신하는 내부 HTTP 엔드포인트의 URI입니다. URI는 네트워크 연결로 확인된 VPC 네트워크의 고정 내부 IP 주소 또는 Cloud DNS로 확인할 수 있는 서비스의 내부 DNS 이름일 수 있습니다.

    HTTP 엔드포인트에 내부 DNS 이름이 사용되는 경우 Eventarc는 DNS 피어링 영역을 자동으로 만들고 DNS 요청을 대상 VPC 네트워크의 DNS 영역으로 전달합니다. DNS 피어링을 사용하면 한 영역의 네임스페이스에 있는 레코드의 요청을 다른 VPC 네트워크에 전달할 수 있습니다. 자세한 내용은 피어링 영역피어링 영역 만들기를 참조하세요.

    동일한 DNS 이름에는 트리거를 둘 이상 만들 수 없습니다.

  • NETWORK_ATTACHMENT_ID: 네트워크 연결 리소스의 고유 식별자입니다. 식별자는 네트워크 연결을 만든 후에 생성됩니다. 자세한 내용은 네트워크 연결 만들기를 참조하세요.

    네트워크 연결을 사용하면 서비스 프로듀서 VPC 네트워크에서 소비자 VPC 네트워크에 대한 연결을 시작할 수 있습니다. Eventarc는 네트워크 연결을 사용해서 소비자의 VPC 네트워크에 호스팅된 내부 HTTP 엔드포인트에 대해 연결을 설정하고 이벤트를 게시합니다.

    네트워크 연결을 만들 때는 프로듀서 수락 및 거부 목록을 통해 연결을 명시적으로 승인할 수 있습니다. 그럼에도 불구하고 Eventarc는 사용자 개입 없이 적절한 프로젝트 ID를 사용해서 네트워크 연결 허용 목록을 업데이트할 수 있습니다.

  • SERVICE_NAME: Google Cloud 서비스의 식별자입니다. 지원되는 감사 로그 이벤트 유형 목록을 참조하세요.

  • METHOD_NAME: 작업의 식별자입니다. 지원되는 감사 로그 이벤트 유형 목록을 참조하세요.

  • SERVICE_ACCOUNT_NAME: 사용자 관리형 서비스 계정의 이름입니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

참고:

  • 이 플래그들은 필수사항입니다.
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • 원하는 경우 --event-filters="resourceName=VALUE" 플래그를 사용하고 리소스의 전체 경로를 지정하여 특정 리소스의 이벤트를 필터링합니다. 생성 시에 식별자가 생성된 동적으로 생성된 리소스는 플래그를 생략합니다. 또는 --event-filters-path-pattern="resourceName=VALUE" 플래그를 사용하고 리소스 경로 패턴을 지정하여 리소스 집합의 이벤트를 필터링합니다.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,...] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다. 그러나 --event-filters-path-pattern 플래그를 사용하면 리소스 경로 패턴을 정의할 수 있습니다.
  • 트리거가 생성된 후에는 이벤트 필터 유형을 변경할 수 없습니다. 다른 이벤트 유형의 경우 새 트리거를 만들어야 합니다.
  • --service-account 플래그는 트리거와 연결된 IAM 서비스 계정 이메일을 지정하는 데 사용됩니다.

예를 들면 다음과 같습니다.

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://10.10.10.2 \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment" \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=eventarc.googleapis.com" \
    --event-filters="methodName=google.cloud.eventarc.v1.Eventarc.GetTrigger" \
    --event-filters="resourceName=projects/my-project/locations/us-central1/triggers/my-trigger" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

타사 이벤트

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --channel=CHANNEL_NAME \
    --project=PROJECT_ID \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자입니다.
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1).

    성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다.

    이 이벤트 대상에는 다음 위치만 지원됩니다.

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

    자세한 내용은 Eventarc 위치를 참조하세요.

  • ENDPOINT_URI: VPC 네트워크에서 트리거의 이벤트를 수신하는 내부 HTTP 엔드포인트의 URI입니다. URI는 네트워크 연결로 확인된 VPC 네트워크의 고정 내부 IP 주소 또는 Cloud DNS로 확인할 수 있는 서비스의 내부 DNS 이름일 수 있습니다.

    HTTP 엔드포인트에 내부 DNS 이름이 사용되는 경우 Eventarc는 DNS 피어링 영역을 자동으로 만들고 DNS 요청을 대상 VPC 네트워크의 DNS 영역으로 전달합니다. DNS 피어링을 사용하면 한 영역의 네임스페이스에 있는 레코드의 요청을 다른 VPC 네트워크에 전달할 수 있습니다. 자세한 내용은 피어링 영역피어링 영역 만들기를 참조하세요.

    동일한 DNS 이름에는 트리거를 둘 이상 만들 수 없습니다.

  • NETWORK_ATTACHMENT_ID: 네트워크 연결 리소스의 고유 식별자입니다. 식별자는 네트워크 연결을 만든 후에 생성됩니다. 자세한 내용은 네트워크 연결 만들기를 참조하세요.

    네트워크 연결을 사용하면 서비스 프로듀서 VPC 네트워크에서 소비자 VPC 네트워크에 대한 연결을 시작할 수 있습니다. Eventarc는 네트워크 연결을 사용해서 소비자의 VPC 네트워크에 호스팅된 내부 HTTP 엔드포인트에 대해 연결을 설정하고 이벤트를 게시합니다.

    네트워크 연결을 만들 때는 프로듀서 수락 및 거부 목록을 통해 연결을 명시적으로 승인할 수 있습니다. 그럼에도 불구하고 Eventarc는 사용자 개입 없이 적절한 프로젝트 ID를 사용해서 네트워크 연결 허용 목록을 업데이트할 수 있습니다.

  • EVENT_FILTER_TYPE: 제공업체에서 지원되는 이벤트 유형입니다. 지원되는 타사 이벤트 유형 목록을 참조하세요.

  • CHANNEL_NAME: 채널 이름입니다. 자세한 내용은 채널 만들기 및 세부정보 검색을 참조하세요.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

  • SERVICE_ACCOUNT_NAME: 사용자 관리형 서비스 계정의 이름입니다.

참고:

  • --event-filters="type=EVENT_FILTER_TYPE" 플래그는 필수사항입니다. 다른 이벤트 필터가 설정되지 않으면 모든 리소스의 이벤트가 일치합니다.
  • 생성 후에는 EVENT_FILTER_TYPE을 변경할 수 없습니다. EVENT_FILTER_TYPE을 변경하려면 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,...] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다.
  • --service-account 플래그는 트리거와 연결된 IAM 서비스 계정 이메일을 지정하는 데 사용됩니다.

예를 들면 다음과 같습니다.

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=third-party-event-type" \
    --channel=my-channel \
    --project=my-project-ID \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

트리거 나열

Google Cloud CLI를 사용하거나 Google Cloud 콘솔을 통해 Eventarc 트리거를 나열하여 트리거 생성을 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Eventarc 트리거 페이지로 이동합니다.

    트리거로 이동

    이 페이지에서는 모든 위치의 트리거를 나열하고 이름, 리전, 이벤트 제공자, 대상 등과 같은 세부정보를 포함합니다.

  2. 트리거를 필터링하려면 다음 안내를 따르세요.

    1. 필터 또는 트리거 필터링 필드를 클릭합니다.
    2. 속성 목록에서 트리거를 필터링하는 옵션을 선택합니다.

    단일 속성을 선택하거나 OR 논리 연산자를 사용하여 속성을 추가할 수 있습니다.

  3. 트리거를 정렬하려면 지원되는 열 제목 옆에 있는 정렬을 클릭합니다.

gcloud

다음 명령어를 실행하여 트리거를 나열합니다.

gcloud eventarc triggers list --location=-

이 명령어는 모든 위치의 트리거를 나열하고 이름, 유형, 대상, 상태와 같은 세부정보를 포함합니다.

다음 단계