이벤트 수신을 위한 등록 만들기

등록은 특정 버스에 대한 구독을 식별합니다. 등록은 대상에 라우팅되는 메시지를 결정하는 일치 기준을 정의합니다. 또한 일치하는 메시지를 통해 라우팅해야 하는 파이프라인을 지정합니다. 파이프라인을 사용하면 대상 대상을 구성할 수 있으며 대상에 전송하기 전에 일치하는 이벤트를 변환하는 옵션도 제공됩니다.

다음에 유의하세요.

  • 파이프라인과 등록은 동일한 Google Cloud 프로젝트에 있어야 합니다. 버스는 동일한 프로젝트에 있거나 다른 프로젝트에 있을 수 있습니다.
  • 하나의 파이프라인을 여러 등록에 사용할 수 있습니다.
  • 파이프라인에서 라우팅된 메시지의 대상은 하나만 될 수 있습니다.
  • 파이프라인 또는 등록을 구성하기 전에 이미 Eventarc 고급 버스를 만들어야 합니다.

필요한 역할

Identity and Access Management (IAM) 역할에는 Google Cloud 리소스에서 특정 작업을 수행할 수 있는 일련의 권한이 포함되어 있습니다. 메시지를 라우트하기 위한 파이프라인 및 등록을 만들 때 다음 역할 및 권한이 필요합니다.

  • 파이프라인을 만드는 데 필요한 권한을 얻으려면 관리자에게 파이프라인 프로젝트에 대한 Eventarc 개발자(roles/eventarc.developer) IAM 역할을 부여해 달라고 요청하세요. 이 사전 정의된 역할에는 파이프라인을 만드는 데 필요한 eventarc.pipelines.create 권한이 포함되어 있습니다.
  • 등록을 생성하는 데 필요한 권한을 얻으려면 관리자에게 등록 프로젝트에 대한 Eventarc 개발자(roles/eventarc.developer) IAM 역할을 부여해 달라고 요청하세요. 이 사전 정의된 역할에는 등록을 만드는 데 필요한 eventarc.enrollments.create 권한이 포함되어 있습니다.
  • 버스를 사용하는 데 필요한 권한을 얻으려면 관리자에게 버스 프로젝트에 대해 Eventarc 메시지 버스 사용자(roles/eventarc.messageBusUser) IAM 역할을 부여해 달라고 요청하세요. 이 사전 정의된 역할에는 버스를 사용하는 데 필요한 eventarc.buses.use 권한이 포함되어 있습니다.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요. 커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

이벤트 수신 등록

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 파이프라인과 등록을 만들 수 있습니다.

콘솔

Google Cloud 콘솔의 파이프라인 페이지에서 파이프라인과 등록을 동시에 만들 수 있습니다.

  1. 등록을 만들려면 Google Cloud 콘솔에서 Eventarc > 파이프라인 페이지로 이동합니다.

    파이프라인으로 이동

  2. 파이프라인 만들기를 클릭합니다.

  3. 파이프라인 세부정보 창에서 다음을 수행합니다.

    1. 파이프라인 이름을 입력합니다. 파이프라인의 ID입니다.
    2. 리전 목록에서 파이프라인을 배포할 리전을 선택합니다. 파이프라인은 버스와 동일한 리전에 만들어야 합니다. 자세한 내용은 Eventarc 고급 위치를 참고하세요.
    3. 선택사항: 기본 구성을 수정하여 이벤트를 재시도할 수 있습니다.
    4. 암호화에서 기본 Google 관리 암호화 키를 수락하거나 Cloud KMS 키를 선택합니다. 자세한 내용은 고객 관리 암호화 키 (CMEK) 사용을 참고하세요.
    5. Cloud KMS 키를 선택하는 경우 다음 단계를 따르세요.

      1. 키 유형 목록에서 키를 관리할 방법을 선택합니다.

        키를 수동으로 관리하거나 키링과 키를 주문형으로 생성할 수 있는 Autokey를 사용할 수 있습니다. Autokey 옵션이 사용 중지된 경우 아직 현재 리소스 유형과 통합되지 않은 것입니다.

      2. 고객 관리 키 선택에서 키를 선택합니다.

        고객 관리 키를 보려면 먼저 리전을 선택해야 합니다.

      3. 선택사항: 키의 리소스 이름을 수동으로 입력하려면 고객 관리 키 선택 목록에서 수동으로 키 입력을 클릭하고 지정된 형식의 키 이름을 입력합니다.

      4. 메시지가 표시되면 Eventarc 서비스 에이전트cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여합니다.

    6. 선택사항: 라벨을 추가하려면 라벨 추가를 클릭합니다. 라벨은 Google Cloud 리소스를 구성하는 데 도움이 되는 키-값 쌍입니다. 자세한 내용은 라벨이란 무엇인가요?를 참고하세요.

    7. 계속을 클릭합니다.

  4. 등록 창에서 다음을 수행합니다.

    1. 등록 추가를 클릭합니다.
    2. 등록 이름을 입력합니다.
    3. 버스 목록에서 구독할 버스를 선택합니다.
    4. CEL 표현식 필드에 CEL을 사용하여 평가 표현식을 작성합니다. 예를 들면 다음과 같습니다.

      message.type == "google.cloud.dataflow.job.v1beta3.statusChanged"

      기본 표현식인 true는 모든 메시지가 필터링되지 않고 라우팅됨을 나타냅니다.

    5. 완료를 클릭합니다.

    6. 다른 등록을 추가하거나 계속을 클릭할 수 있습니다.

  5. 선택사항: 이벤트 미디에이션 창에서 다음을 수행하거나 계속을 클릭합니다.

    1. 변환 적용 체크박스를 선택합니다.
    2. 인바운드 형식 목록에서 해당하는 형식을 선택합니다.

      변환을 적용할 때는 파이프라인의 수신 데이터 형식을 지정해야 하며 모든 이벤트가 이 형식과 일치해야 합니다.

    3. Avro 또는 Protobuf 형식의 경우 인바운드 스키마를 지정해야 합니다. 원하는 경우 인바운드 스키마를 업로드할 수 있습니다. 자세한 내용은 수신된 이벤트 형식 지정을 참고하세요.

    4. CEL 표현식 입력란에 CEL을 사용하여 변환 표현식을 작성합니다.

    5. 계속을 클릭합니다.

  6. 대상 창에서 다음을 수행합니다.

    1. 대상 유형 목록에서 메시지를 라우트할 대상 유형을 선택합니다. 대상 유형에 따라 다음을 수행합니다.

      • HTTP 엔드포인트: 대상 URI를 지정합니다. 호스트는 Virtual Private Cloud (VPC) 네트워크에서 주소 지정이 가능한 고정 IP이거나 Cloud DNS를 사용하여 확인할 수 있는 서비스의 내부 도메인 이름 시스템 (DNS) 호스트 이름일 수 있습니다.

        이 대상 유형을 사용하여 Cloud Run 함수를 타겟팅할 수 있습니다.

      • Eventarc Advanced 버스: Eventarc Advanced 버스를 선택합니다.

      • Workflows 워크플로: Workflows 워크플로를 선택합니다.

      • Pub/Sub 주제: Pub/Sub 주제를 선택하거나 만듭니다.

      • Cloud Run 서비스 (HTTP 사용): 이벤트를 루트 URL 경로 (/)로 전송되는 HTTP POST 요청으로 수신하는 Cloud Run 서비스를 선택합니다. 원하는 경우 이벤트를 전송할 대상 서비스에서 상대 URL 경로를 지정할 수 있습니다.

      • Cloud Run 작업 (HTTP 사용): 이벤트를 HTTP POST 요청으로 수신할 Cloud Run 작업을 선택합니다.

    2. 네트워크 연결을 지정합니다.

      네트워크 연결은 프로듀서 VPC 네트워크가 소비자 VPC 네트워크에 대한 연결을 시작할 수 있게 해주는 리소스입니다. 이벤트를 게시하기 위해 Eventarc Advanced는 네트워크 연결을 사용해서 VPC 네트워크에 호스팅되는 엔드포인트에 대한 연결을 설정합니다.

      네트워크 연결을 참조하는 Private Service Connect 인터페이스에서 연결을 자동으로 허용하는 네트워크 연결을 만들 수 있습니다. 대상 엔드포인트가 포함된 동일한 네트워크와 리전에 네트워크 연결을 만듭니다.

      DNS 주소(예: Cloud Run, Pub/Sub, Workflows 또는 다른 Eventarc 고급 버스)를 사용하여 Google 대상에 메시지를 라우팅하는 경우 네트워크 연결에 사용된 서브넷에서 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다. 그러지 않으면 DNS 주소를 확인할 수 없습니다.

    3. 해당하는 경우 외부 형식 목록에서 형식을 선택합니다.

      파이프라인에 수신 데이터 형식이 지정되지 않은 경우 발신 형식을 설정할 수 없습니다.

    4. 해당하는 경우 메시지 결합을 적용합니다. 자세한 내용은 메시지 결합 정의를 참고하세요.

    5. 인증을 사용 설정하려면 인증 사용 설정 체크박스를 선택합니다.

      1. 인증 헤더 목록에서 생성할 토큰 유형을 선택하고 HTTP 요청에 Authorization 헤더로 첨부합니다.

        • OAuth 토큰은 일반적으로 *.googleapis.com에 호스팅된 Google API를 호출할 때만 사용해야 합니다. 원하는 경우 이 토큰의 범위를 지정합니다. 지정하지 않으면 기본값은 https://www.googleapis.com/auth/cloud-platform입니다. Google Cloud 서비스의 경우 권장사항은 세부적인 액세스 제어를 제공하는 Identity and Access Management (IAM)와 함께 모든 Google Cloud API를 포함하는 https://www.googleapis.com/auth/cloud-platform 범위를 사용하는 것입니다.

          다른 Eventarc 고급 버스, Pub/Sub 또는 Workflows에 대한 모든 요청에는 승인된 서비스 계정 중 하나에 대해 Google에서 서명한 OAuth 토큰이 포함된 HTTP 승인 헤더가 있어야 합니다.

        • OIDC 토큰은 토큰을 직접 확인하려는 엔드포인트를 비롯한 다양한 시나리오에 사용할 수 있습니다. 또한 이 토큰의 대상인 대상을 지정합니다. 일반적으로 대상 파이프라인의 URL과 일치해야 합니다. 지정하지 않으면 요청 매개변수를 포함한 전체 URL이 사용됩니다.

          Cloud Run은 모든 요청에 대해 IAM 검사를 실행하며 run.routes.invoke 권한을 사용하여 다음 두 가지 방법 중 하나로 Cloud Run 서비스에 액세스할 수 있는 사용자를 구성할 수 있습니다.

          • 서비스 액세스를 허용할 서비스 계정 또는 그룹을 선택할 수 있는 권한을 부여합니다. 모든 요청에는 승인된 서비스 계정 중 하나에 대해 Google에서 서명한 OpenID Connect 토큰이 포함된 HTTP 승인 헤더가 있어야 합니다.

          • 인증되지 않은 액세스를 허용하려면 allUsers에게 권한을 부여합니다.

          자세한 내용은 Cloud Run 액세스 제어를 참고하세요.

        토큰 유형에 대해 자세히 알아보세요.

      2. 서비스 계정 목록에서 대상 서비스를 호출할 서비스 계정을 선택합니다. 또는 새 서비스 계정을 만들 수 있습니다.

        이는 파이프라인과 연결되어 있고 이전에 Eventarc Advanced에 필요한 특정 역할을 부여한 IAM 서비스 계정 이메일을 지정합니다.

  7. 만들기를 클릭합니다.

gcloud

gcloud CLI를 사용할 때는 먼저 파이프라인을 만든 다음 적절한 명령어를 사용하여 등록을 만듭니다.

파이프라인

  1. 터미널을 엽니다.

  2. gcloud beta eventarc pipelines create 명령어를 사용하여 파이프라인을 만듭니다.

    gcloud beta eventarc pipelines create PIPELINE_NAME \
        --destinations=DESTINATION_KEY \
        --location=REGION

    다음을 바꿉니다.

    • PIPELINE_NAME: 파이프라인의 ID 또는 정규화된 이름
    • DESTINATION_KEY: 파이프라인의 대상을 구성하는 하나 이상의 키-값 쌍

      다음 키 중 하나만 설정해야 합니다.

      다음 키를 설정해야 합니다.

      • network_attachment: 프로듀서 VPC 네트워크가 소비자 VPC 네트워크에 대한 연결을 시작할 수 있는 리소스입니다. 이벤트를 게시하기 위해 Eventarc Advanced는 네트워크 연결을 사용해서 VPC 네트워크에 호스팅되는 엔드포인트에 대한 연결을 설정합니다.

        네트워크 연결을 참조하는 Private Service Connect 인터페이스에서 연결을 자동으로 허용하는 네트워크 연결을 만들 수 있습니다. 대상 리소스가 포함된 동일한 네트워크 및 리전에 네트워크 연결을 만듭니다.

        DNS 주소(예: Cloud Run, Pub/Sub, Workflows 또는 다른 Eventarc 고급 버스)를 사용하여 Google 대상에 메시지를 라우팅하는 경우 네트워크 첨부파일에 사용된 서브넷에서 비공개 Google 액세스가 사용 설정되어 있는지 확인합니다. 그러지 않으면 DNS 주소를 확인할 수 없습니다.

      인증을 사용 설정하려면 다음 키 중 하나를 설정하면 됩니다.

      • google_oidc_authentication_service_account: 토큰을 직접 검증하려는 엔드포인트를 비롯한 다양한 시나리오에 사용할 수 있는 OIDC 토큰을 생성하는 데 사용되는 서비스 계정 이메일입니다. 원하는 경우 google_oidc_authentication_audience를 설정하여 이 토큰의 대상을 지정할 수 있습니다. 일반적으로 대상 파이프라인의 URL과 일치해야 합니다. 지정하지 않으면 요청 매개변수를 포함한 전체 URL이 사용됩니다.

        Cloud Run은 모든 요청에 대해 IAM 검사를 실행하며 run.routes.invoke 권한을 사용하여 다음 두 가지 방법 중 하나로 Cloud Run 서비스에 액세스할 수 있는 사용자를 구성할 수 있습니다.

        • 서비스 액세스를 허용할 서비스 계정 또는 그룹을 선택할 수 있는 권한을 부여합니다. 모든 요청에는 승인된 서비스 계정 중 하나에 대해 Google에서 서명한 OpenID Connect 토큰이 포함된 HTTP 승인 헤더가 있어야 합니다.

        • 인증되지 않은 액세스를 허용하려면 allUsers에게 권한을 부여합니다.

        자세한 내용은 Cloud Run 액세스 제어 를 참고하세요.

      • oauth_token_authentication_service_account: OAuth 토큰을 생성하는 데 사용되는 서비스 계정 이메일로, 일반적으로 *.googleapis.com에 호스팅된 Google API를 호출할 때만 사용해야 합니다. 원하는 경우 oauth_token_authentication_scope를 설정하여 이 토큰의 범위를 지정할 수 있습니다. 그러지 않으면 기본값은 https://www.googleapis.com/auth/cloud-platform입니다. Google Cloud 서비스의 경우 권장사항은 세부적인 액세스 제어를 제공하는 Identity and Access Management (IAM)와 함께 모든 Google Cloud API를 포함하는 https://www.googleapis.com/auth/cloud-platform 범위를 사용하는 것입니다.

        다른 Eventarc 고급 버스, Pub/Sub 또는 Workflows에 대한 모든 요청에는 승인된 서비스 계정 중 하나에 대해 Google에서 서명한 OAuth 토큰이 포함된 HTTP 승인 헤더가 있어야 합니다.

        토큰 유형에 대해 자세히 알아보세요.

      선택사항: 다음 키 중 하나를 설정할 수 있습니다.

      • output_payload_format_avro_schema_definition
      • output_payload_format_json
      • output_payload_format_protobuf_schema_definition

        출력 형식을 설정하는 경우 입력 형식도 지정해야 합니다 (다음 input-payload-format-* 플래그 참고).

      선택사항: http_endpoint_uri가 대상 키로 사용되지 않는 경우 다음 키를 설정할 수 있습니다.

      • project: 대상 리소스의 Google Cloud 프로젝트 ID입니다. 기본적으로 파이프라인의 프로젝트 ID가 사용됩니다.
      • location: 대상 리소스의 위치입니다. 기본적으로 파이프라인의 위치가 사용됩니다.
    • REGION: 지원되는 Eventarc Advanced 위치

      또는 gcloud CLI 위치 속성을 설정할 수 있습니다.

      gcloud config set eventarc/location REGION
      

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

    • --async: 진행 중인 작업이 완료될 때까지 기다리지 않고 명령어에서 즉시 반환합니다.
    • --crypto-key: 고객 관리 암호화 키의 정규화된 이름을 지정합니다. 지정하지 않으면 Google 관리 키가 사용됩니다.
    • --logging-config: 로깅 수준을 구성합니다. 로깅 수준은 NONE, DEBUG, INFO, NOTICE, WARNING, ERROR, CRITICAL, ALERT, EMERGENCY 중 하나여야 합니다.
    • --mediations: 변환을 적용합니다. transformation_template은 지원되는 유일한 템플릿이며 파이프라인당 하나의 미디에이션만 지원됩니다. 예를 들면 다음과 같습니다.

      --mediations=transformation_template='message.removeFields(["id\ ","credit_card_number","age"])'

      변환을 적용하는 경우 다음 플래그 중 하나를 사용하여 입력 형식을 지정해야 합니다.

    • 다음 중 하나로 입력 형식을 지정합니다.

      • --input-payload-format-avro-schema-definition
      • --input-payload-format-json
      • --input-payload-format-protobuf-schema-definition
    • --max-retry-attempts, --max-retry-delay, --min-retry-delay재시도 이벤트

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

    gcloud beta eventarc pipelines create my-pipeline \
        --destinations=http_endpoint_uri='https://example-endpoint.com',network_attachment=my-network-attachment,oauth_token_authentication_service_account=example-service-account@example-project.gserviceaccount.iam.com,oauth_token_authentication_scope='https://www.googleapis.com/auth/cloud-platform',output_payload_format_avro_schema_definition='{"type": "record","name": "my_record", "fields": [{"name": "my_field", "type":"string"}]}' \
        --input-payload-format-avro-schema-definition='{"type":"record", "name": "my_record", "fields": [{"name": "my_field","type": "string"}]}' \
        --location=us-central1 \
        --async
    

    자세한 내용과 예시는 gcloud CLI 문서를 참고하세요.

등록

  1. 터미널을 엽니다.

  2. gcloud beta eventarc enrollments create 명령어를 사용하여 등록을 만듭니다.

    gcloud beta eventarc enrollments create ENROLLMENT_NAME \
        --cel-match=MATCH_EXPRESSION \
        --destination-pipeline=PIPELINE_NAME \
        --message-bus=BUS_NAME \
        --message-bus-project=PROJECT_ID \
        --location=REGION

    다음을 바꿉니다.

    • ENROLLMENT_NAME: 등록의 ID 또는 정규화된 이름
    • MATCH_EXPRESSION: CEL을 사용하여 이 등록에 대한 일치 표현식입니다(예: "message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'").
    • PIPELINE_NAME: 이 등록의 대상 파이프라인 ID 또는 정규화된 이름
    • BUS_NAME: Eventarc 고급 버스의 ID 또는 정규화된 이름
    • PROJECT_ID: 버스의 Google Cloud 프로젝트 ID
    • REGION: 지원되는 Eventarc Advanced 위치

      또는 gcloud CLI 위치 속성을 설정할 수 있습니다.

      gcloud config set eventarc/location REGION
      

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

    • --async: 진행 중인 작업이 완료될 때까지 기다리지 않고 명령어에서 즉시 반환합니다.

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

    gcloud beta eventarc enrollments create my-enrollment \
        --cel-match="message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'" \
        --destination-pipeline=my-pipeline \
        --message-bus=my-message-bus \
        --message-bus-project=another-google-cloud-project \
        --location=us-central1 \
        --async
    

등록 삭제

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 등록을 삭제할 수 있습니다.

콘솔

  1. 등록을 삭제하려면 Google Cloud 콘솔에서 Eventarc > 파이프라인 페이지로 이동합니다.

    파이프라인으로 이동

  2. 등록을 삭제할 파이프라인의 이름을 클릭합니다.

    파이프라인 세부정보 창이 열립니다.

  3. 계속을 클릭합니다.

    등록 창이 열립니다.

  4. 삭제하려는 등록의 삭제 아이콘을 클릭합니다.

  5. 저장을 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. gcloud beta eventarc enrollments delete 명령어를 사용하여 등록을 삭제합니다.

    gcloud beta eventarc enrollments delete ENROLLMENT_NAME \
          --location=REGION

    다음을 바꿉니다.

파이프라인 삭제

Google Cloud 콘솔에서 또는 Google Cloud CLI를 사용하여 파이프라인을 삭제할 수 있습니다.

파이프라인을 삭제하는 데 10분 이상 걸릴 수 있습니다.

콘솔

  1. 파이프라인을 삭제하려면 Google Cloud 콘솔에서 Eventarc > 파이프라인 페이지로 이동합니다.

    파이프라인으로 이동

  2. 파이프라인 목록에서 삭제하려는 파이프라인 이름 옆에 있는 체크박스를 선택합니다.

  3. 삭제를 클릭합니다.

  4. Delete를 입력하여 삭제를 확인합니다.

  5. 삭제를 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. gcloud beta eventarc pipelines delete 명령어를 사용하여 파이프라인을 삭제합니다.

    gcloud beta eventarc pipelines delete PIPELINE_NAME \
          --location=REGION

    다음을 바꿉니다.

다음 단계