Cloud Run용 트리거 만들기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Cloud Run 서비스가 지정된 이벤트 또는 이벤트 집합에 대한 알림을 수신하도록 Eventarc 트리거를 만들 수 있습니다. 트리거 필터를 지정하여 이벤트 소스와 대상 Cloud Run 서비스를 포함한 이벤트 라우팅을 구성할 수 있습니다.

서비스 요청은 다음 이벤트 유형에 의해 트리거됩니다.

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

조직에서 Google Cloud 환경에 제약조건을 적용하면 이 문서의 일부 단계가 올바르게 작동하지 않을 수 있습니다. 이 경우 공개 IP 주소 또는 서비스 계정 키 만들기와 같은 작업을 완료하지 못할 수 있습니다. 제약조건에 대한 오류를 반환하는 요청을 수행하는 경우 제한된 Google Cloud 환경에서 애플리케이션 개발 방법을 참조하세요.

트리거 만들기 준비

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

  1. API를 사용 설정합니다.

    gcloud services enable cloudbuild.googleapis.com \
        eventarc.googleapis.com \
        logging.googleapis.com \
        pubsub.googleapis.com \
        run.googleapis.com \
        workflows.googleapis.com
    
  2. 사용자 관리형 서비스 계정이 아직 없는 경우 이 계정을 만들거나 기본 서비스 계정을 사용합니다.

    SERVICE_ACCOUNT=SA_NAME
    gcloud iam service-accounts create ${SERVICE_ACCOUNT}

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

    이 페이지의 예시에서는 Compute Engine 기본 서비스 계정을 사용하고 있습니다.

  3. 인증 및 인증되지 않은 호출에 필요한 Identity and Access Management(IAM) 역할, 권한, 플래그를 부여합니다. 자세한 내용은 Eventarc 역할 및 권한을 참조하세요.

  4. Cloud Storage에서 직접 이벤트의 트리거를 만드는 경우 pubsub.publisher 역할을 Cloud Storage 서비스 계정에 부여합니다.

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

    PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다. 프로젝트 ID는 Google Cloud Console의 대시보드 페이지에서 찾을 수 있습니다.

gcloud를 사용하여 트리거 만들기

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

Cloud 감사 로그 이벤트

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정합니다. 예를 들면 gcloud config set eventarc/location us-central1입니다.

    Eventarc용 Cloud 감사 로그 트리거는 특정 리전 및 전역 리전에서 사용할 수 있지만 이중 리전 및 멀티 리전 위치에서는 사용할 수 없습니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치하는 것이 좋습니다.

    전역 위치를 지정하면 이벤트 필터와 일치하는 모든 위치에서 이벤트가 수신됩니다. 예를 들어 전역 Eventarc 트리거를 만들면 EU 및 미국 멀티 리전의 Cloud Storage 버킷과 같은 리소스에서 이벤트를 수신할 수 있습니다.

  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • SERVICE_NAME: Google Cloud 서비스의 식별자
  • METHOD_NAME: 작업의 식별자
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • 이 플래그들은 필수사항입니다.
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • serviceNamemethodName 값을 포함하여 Eventarc에서 지원되는 감사 로그 이벤트 목록은 Eventarc에서 지원되는 이벤트를 참조하세요.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,..] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다. Cloud 감사 로그의 이벤트 필터 확인을 참조하세요.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정합니다.
  • 원하는 경우 --event-filters="resourceName=VALUE" 플래그를 사용하고 리소스의 전체 경로를 지정하여 특정 리소스의 이벤트를 필터링합니다. 생성 시에 식별자가 생성된 동적으로 생성된 리소스는 플래그를 생략합니다. 또는 --event-filters-path-pattern="resourceName=VALUE" 플래그를 사용하고 리소스 경로 패턴을 지정하여 리소스 집합의 이벤트를 필터링합니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.

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

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 storage.googleapis.com에서 작성된 감사 로그와 storage.buckets.update로 식별된 작업에 대한 helloworld-trigger라는 이름의 트리거를 만듭니다.

직접 이벤트

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정합니다. 예를 들면 gcloud config set eventarc/location us-central1입니다.

    Eventarc용 Cloud Storage 트리거는 단일 리전, 이중 리전, 멀티 리전 위치에서 사용할 수 있습니다. 트리거는 Cloud Storage 버킷과 같은 위치에 있어야 합니다.

  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • EVENT_FILTER_TYPE: Cloud Storage 이벤트의 식별자이며 다음 중 하나일 수 있습니다.
    • google.cloud.storage.object.v1.finalized: 버킷에서 새로운 객체를 만들거나 기존 객체를 덮어쓰고 해당 객체의 새로운 세대를 만들면 이벤트가 전송됩니다.
    • google.cloud.storage.object.v1.archived: 객체의 서비스 중인 버전이 보관처리되거나 삭제될 때 이벤트가 전송됩니다. 이 이벤트는 버전 관리 버킷인 경우에만 전송됩니다.
    • google.cloud.storage.object.v1.deleted: 객체가 영구적으로 삭제될 때 이벤트가 전송됩니다. 버킷의 객체 버전 관리 설정에 따라 다음과 같은 결과가 발생합니다.
      • 버전 관리 버킷의 경우 버전이 영구적으로 삭제될 때에만 전송됩니다(객체를 보관처리할 때는 전송되지 않음).
      • 버전 관리 버킷이 아닌 경우 객체가 삭제되거나 덮어쓰여질 때 전송됩니다.
    • google.cloud.storage.object.v1.metadataUpdated: 기존 객체의 메타데이터가 변경될 때 이벤트가 전송됩니다.
  • BUCKET: Cloud Storage 버킷의 전역 고유 식별자
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • 이 플래그들은 필수사항입니다.
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • 트리거가 생성되면 EVENT_FILTER_TYPE을 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • 이벤트는 Cloud Storage의 Pub/Sub 알림을 사용하여 전송됩니다. 같은 버킷에 등록된 알림을 너무 많이 설정하면 Cloud Storage bucket ...: Pub/Sub notification limit reached 오류로 표시된 버킷의 알림 한도가 소진될 수 있습니다. 특정 이벤트에 트리거되는 알림 구성은 10개까지 사용할 수 있습니다. Cloud Storage 할당량 및 한도 페이지에서 추가 할당량 및 제한사항을 참조하세요.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,..] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.
  • Cloud Storage 버킷은 Eventarc 트리거와 동일한 Google Cloud 프로젝트 및 리전 또는 멀티 리전에 있어야 합니다.

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

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 Cloud Storage 버킷 my-project-bucketgoogle.cloud.storage.object.v1.finalized로 식별된 이벤트에 대해 helloworld-trigger라는 트리거를 만듭니다.

Firebase 알림

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • ALERT_TYPE: Firebase 알림의 유형이며 다음 중 하나일 수 있습니다.
    • appDistribution.newTesterIosDevice: 지정된 앱에서 새 iOS 기기가 등록되면 이벤트가 전송됩니다.
    • billing.planAutomatedUpdate: Firebase 프로젝트의 결제 요금제가 자동으로 업데이트되면 이벤트가 전송됩니다(예: 요금제가 결제 문제로 다운그레이드되는 경우).
    • billing.planUpdate: 사용자가 Firebase 프로젝트 요금제를 수정하면 이벤트가 전송됩니다(예: 결제 계정이 프로젝트에 연결되거나 분리되는 경우).
    • crashlytics.newAnrIssue: 앱에서 새로운 애플리케이션 응답 없음(ANR) 오류가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
    • crashlytics.newFatalIssue: 앱에서 새로운 치명적인 비정상 종료가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
    • crashlytics.newNonfatalIssue: 앱에 심각하지 않은 새로운 오류가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
    • crashlytics.regression: 이전 앱 버전에서 종료됨으로 표시된 문제로 인해 앱에 비정상 종료가 발생하면 이벤트가 전송됩니다.
    • crashlytics.stabilityDigest: Crashlytics에서 가장 많이 발생하는 문제에 대한 알림이 발생하면 이벤트가 전송됩니다.
    • crashlytics.velocity: 단일 문제가 상당한 수의 앱 세션에 비정상 종료를 유발하면 이벤트가 전송됩니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • --location 플래그는 global여야 합니다. 자세한 내용은 Eventarc 위치를 참조하세요.
  • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published"--event-filters="alerttype=ALERT_TYPE" 플래그는 필수입니다.
  • 원하는 경우 --event-filters="appid=APP_ID" 플래그를 사용하고 정확히 일치하는 값을 지정하여 특정 Firebase 앱 ID의 이벤트를 필터링할 수 있습니다.
  • 트리거가 생성되면 이벤트 필터 유형을 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.

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

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 google.firebase.firebasealerts.alerts.v1.published로 식별된 이벤트와 crashlytics.velocity 알림 유형에 대해 helloworld-trigger라는 트리거를 만듭니다.

Firebase 실시간 데이터베이스

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • LOCATION: Eventarc 트리거 위치입니다. 또는 eventarc/location 속성을 설정합니다. 예를 들면 gcloud config set eventarc/location us-central1입니다. Eventarc용 Firebase 실시간 데이터베이스 트리거는 다음 위치에서만 사용할 수 있습니다.

    • us-central1
    • europe-west1
    • asia-southeast1

    트리거는 Firebase 실시간 데이터베이스 인스턴스와 동일한 위치에 있어야 합니다. 자세한 내용은 실시간 데이터베이스 위치를 참조하세요.

  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • EVENT_FILTER_TYPE: Firebase 실시간 데이터베이스 이벤트의 식별자로 다음 중 하나일 수 있습니다.

    • google.firebase.database.ref.v1.created: 데이터베이스에서 데이터가 생성되면 이벤트가 전송됩니다.
    • google.firebase.database.ref.v1.updated: 데이터베이스에서 데이터가 업데이트되면 이벤트가 전송됩니다.
    • google.firebase.database.ref.v1.deleted: 데이터베이스에서 데이터가 삭제되면 이벤트가 전송됩니다.
    • google.firebase.database.ref.v1.written: 데이터베이스에서 데이터가 생성, 업데이트 또는 삭제되면 이벤트가 전송됩니다.
  • INSTANCE: 단일 데이터베이스 인스턴스 및 연산자는 다음 중 하나일 수 있습니다.

    • 같음, 예: --event-filters="instance=INSTANCE"
    • 경로 패턴, 예: --event-filters-path-pattern="instance=INSTANCE" 자세한 내용은 경로 패턴 이해를 참조하세요.
  • REF: 해당 경로 또는 모든 하위 항목에서 데이터가 생성, 업데이트 또는 삭제될 때 이벤트를 수신할 데이터베이스 인스턴스 내의 경로입니다.

  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • 이 플래그들은 필수사항입니다.
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" 또는 --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • 트리거가 생성되면 이벤트 필터 유형을 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.

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

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 google.firebase.database.ref.v1.created로 식별된 이벤트에 helloworld-trigger라는 트리거를 만듭니다.

Firebase 원격 구성

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • --location 플래그는 global여야 합니다. 자세한 내용은 Eventarc 위치를 참조하세요.
  • --event-filters 플래그는 필수 항목이며 유형은 google.firebase.remoteconfig.remoteConfig.v1.updated여야 합니다. 이벤트는 원격 구성 템플릿이 업데이트될 때 전송됩니다.
  • 트리거가 생성되면 이벤트 필터 유형을 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.

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

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 google.firebase.remoteconfig.remoteConfig.v1.updated로 식별된 이벤트에 helloworld-trigger라는 트리거를 만듭니다.

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호

참고:

  • --location 플래그는 global여야 합니다. 자세한 내용은 Eventarc 위치를 참조하세요.
  • --event-filters 플래그는 필수 항목이며 유형은 google.firebase.testlab.testMatrix.v1.completed여야 합니다. TestMatrix가 완료되면 이벤트가 전송됩니다.
  • 트리거가 생성되면 이벤트 필터 유형을 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다.
  • --service-account 플래그는 트리거와 연결된 Identity and Access Management(IAM) 서비스 계정 이메일을 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.

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

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

이 명령어는 google.firebase.testlab.testMatrix.v1.completed로 식별된 이벤트에 helloworld-trigger라는 트리거를 만듭니다.

Pub/Sub 메시지(기존 주제)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • LOCATION: Eventarc 트리거의 위치입니다. 또는 eventarc/location 속성을 설정합니다. 예를 들면 gcloud config set eventarc/location us-central1입니다.

    Eventarc용 Pub/Sub 트리거는 단일 리전 위치에서만 사용할 수 있으며, 전역 Eventarc 트리거는 만들 수 없습니다.

  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID
  • TOPIC_NAME: 기존 Pub/Sub 주제의 이름입니다. 주제는 트리거와 동일한 프로젝트에 있어야 합니다.

참고:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" 플래그는 필수사항입니다.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,..] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다.
  • --transport-topic 플래그는 기존 Pub/Sub 주제 또는 정규화된 식별자의 ID를 지정하는 데 사용됩니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.
  • 기본적으로 Eventarc용으로 생성된 Pub/Sub 구독은 활동과 관계없이 유지되며 만료되지 않습니다. 비활성 기간을 변경하려면 구독 관리를 참조하세요.

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

  gcloud eventarc triggers create pubsub-trigger-existing \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_NAME}

이 명령어는 projects/${PROJECT_ID}/topics/${TOPIC_NAME}으로 식별된 Pub/Sub 주제에 대한 pubsub-trigger-existing이라는 이름의 트리거를 만듭니다.

Pub/Sub 메시지(새 주제)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

다음을 바꿉니다.

  • TRIGGER: 트리거의 ID 또는 정규화된 식별자
  • LOCATION: Eventarc 트리거의 위치입니다. 또는 eventarc/location 속성을 설정합니다. 예를 들면 gcloud config set eventarc/location us-central1입니다.

    Eventarc용 Pub/Sub 트리거는 단일 리전 위치에서만 사용할 수 있으며, 전역 Eventarc 트리거는 만들 수 없습니다.

  • DESTINATION_RUN_SERVICE: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 루트 URL 경로(/)로 전송되는 HTTP POST 요청으로 수신합니다.
  • DESTINATION_RUN_REGION: 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.

참고:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" 플래그는 필수사항입니다.
  • 각 트리거에 여러 이벤트 필터를 넣거나(한 개의 --event-filters=[ATTRIBUTE=VALUE,..] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다.
  • 선택에 따라 --destination-run-path 플래그를 사용하여 트리거 이벤트가 전송될 대상 Cloud Run 서비스의 상대 경로를 지정합니다.
  • 기본적으로 Eventarc용으로 생성된 Pub/Sub 구독은 활동과 관계없이 유지되며 만료되지 않습니다. 비활성 기간을 변경하려면 구독 관리를 참조하세요.

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

  gcloud eventarc triggers create pubsub-trigger-new \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

이렇게 하면 새 Pub/Sub 주제와 pubsub-trigger-new라는 트리거가 생성됩니다.

Eventarc 트리거를 삭제하면 이 트리거로 생성된 모든 Pub/Sub 주제도 삭제되므로, 권장사항에 따라서는 트리거로 생성된 Pub/Sub 주제를 다시 사용하지 않는 것이 좋습니다.

Console을 통해 트리거 만들기

Cloud Run Console 페이지를 사용해서 Cloud 감사 로그 및 Pub/Sub 이벤트 유형에 대해 트리거를 만들 수 있습니다. 하지만 직접 이벤트(예를 들어 Cloud Storage 또는 Firebase Alerts 사용)로 트리거를 만들려면 gcloud CLI 또는 Eventarc Console 페이지를 사용해야 합니다.

  1. 필요한 경우 Eventarc API를 사용 설정합니다.

    API 사용 설정하기

  2. 콘솔에서 Cloud Run으로 이동합니다.

    Cloud Run으로 이동

  3. 서비스 목록에서 기존 서비스를 클릭하거나 새 서비스를 만듭니다.

  4. 서비스 세부정보 페이지에서 트리거 탭을 클릭합니다.

  5. Eventarc 트리거 추가를 클릭합니다.

    Eventarc 트리거 창이 열립니다. 이벤트를 라우팅하는 최선의 방법을 결정하려면 이벤트 라우팅 옵션을 참조하세요.

  6. 트리거 이름을 입력합니다.

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

  7. 이벤트 제공자를 선택합니다.

    Google 또는 이벤트 소스인 파트너 서비스입니다. 예를 들어 BigQuery를 선택합니다.

  8. 이벤트를 선택합니다.

    • 커스텀 이벤트—Cloud Pub/Sub 이벤트 제공업체에게 적용됨
    • 직접 이벤트—일부 이벤트 제공업체에만 적용됨
    • Cloud 감사 로그 사용 - 모든 이벤트 제공자에게 적용됩니다.

    커스텀

    메시지가 Pub/Sub 주제에 게시되면 서비스 요청이 트리거됩니다. 이는 Cloud Pub/Sub 이벤트 제공자에게 적용됩니다.

    1. 커스텀 아래에 나열된 이벤트에서 Cloud Pub/Sub 주제를 선택합니다.

    2. 기존 주제를 선택하거나 기본값 없음을 그대로 적용하여 트리거에 새 주제를 만듭니다.

      기존 Pub/Sub 주제는 트리거와 동일한 프로젝트에 있어야 합니다.

      기본적으로 Eventarc용으로 생성된 Pub/Sub 구독은 활동과 관계없이 유지되며 만료되지 않습니다. 비활성 기간을 변경하려면 구독 관리를 참조하세요.

      Eventarc 트리거를 삭제하면 트리거로 생성된 모든 Pub/Sub 주제도 삭제되므로 트리거로 생성된 Pub/Sub 주제를 재사용하지 않는 것이 좋습니다.

    3. 리전을 선택합니다.

      Eventarc용 Pub/Sub 트리거는 단일 리전 위치에서만 사용할 수 있으며, 전역 Eventarc 트리거는 만들 수 없습니다.

    직접 고객

    Cloud Storage

    객체 생성, 삭제, 보관처리, 메타데이터 업데이트와 같은 Cloud Storage 버킷 내 이벤트에 대한 응답으로 서비스에 대한 요청이 트리거됩니다. 이는 Cloud Storage 이벤트 제공자에게 적용됩니다.

    1. 직접 아래에 나열된 이벤트에서 다음 중 하나를 선택합니다.

      • google.cloud.storage.object.v1.archived: 객체의 라이브 버전이 보관처리되거나 삭제되면 이벤트가 전송됩니다. 이 이벤트는 버전 관리 버킷인 경우에만 전송됩니다.
      • google.cloud.storage.object.v1.delete: 객체가 영구적으로 삭제되면 이벤트가 전송됩니다. 버킷의 객체 버전 관리 설정에 따라 다음과 같은 결과가 발생합니다.
        • 버전 관리 버킷의 경우 버전이 영구적으로 삭제될 때에만 전송됩니다(객체를 보관처리할 때는 전송되지 않음).
        • 버전 관리 버킷이 아닌 경우 객체가 삭제되거나 덮어써질 때 전송됩니다.
      • google.cloud.storage.object.v1.finalized: 버킷에서 새로운 객체를 만들거나 기존 객체를 덮어쓰고 해당 객체의 새로운 세대를 만들면 이벤트가 전송됩니다.
      • google.cloud.storage.object.v1.metadataUpdated: 기존 객체의 메타데이터가 변경되면 이벤트가 전송됩니다.
    2. Cloud Storage 버킷의 전역적으로 고유한 식별자를 지정하거나 찾습니다.

      Cloud Storage 버킷은 Eventarc 트리거와 동일한 Google Cloud 프로젝트 및 리전 또는 멀티 리전에 있어야 합니다.

    3. 리전을 선택합니다.

      Eventarc용 Cloud Storage 트리거는 단일 리전, 이중 리전, 멀티 리전 위치에서 사용할 수 있습니다. Cloud Storage 버킷은 Eventarc 트리거와 동일한 Google Cloud 프로젝트 및 리전 또는 멀티 리전에 있어야 합니다.

    이벤트는 Cloud Storage의 Pub/Sub 알림을 사용하여 전송됩니다. 같은 버킷에 등록된 알림을 너무 많이 설정하면 Cloud Storage bucket ...: Pub/Sub notification limit reached 오류로 표시된 버킷의 알림 한도가 소진될 수 있습니다. 특정 이벤트에 트리거되는 알림 구성은 10개까지 사용할 수 있습니다. Cloud Storage 할당량 및 한도 페이지에서 추가 할당량 및 제한사항을 참조하세요.

    Firebase 알림

    Firebase 알림이 Firebase 서비스에 의해 게시되면 이벤트에 대한 응답으로 서비스 요청이 트리거됩니다.

    1. 직접에 나열된 이벤트에서 google.firebase.firebasealerts.alerts.v1.published를 선택합니다.

    2. 리전 목록에서 전역(전역)을 선택합니다.

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

    3. 필터 섹션의 alerttype 목록에서 다음 중 하나를 선택합니다.

      • appDistribution.newTesterIosDevice: 지정된 앱에서 새 iOS 기기가 등록되면 이벤트가 전송됩니다.
      • billing.planAutomatedUpdate: Firebase 프로젝트의 결제 요금제가 자동으로 업데이트되면 이벤트가 전송됩니다(예: 요금제가 결제 문제로 다운그레이드되는 경우).
      • billing.planUpdate: 사용자가 Firebase 프로젝트 요금제를 수정하면 이벤트가 전송됩니다(예: 결제 계정이 프로젝트에 연결되거나 분리되는 경우).
      • crashlytics.newAnrIssue: 앱에서 새로운 애플리케이션 응답 없음(ANR) 오류가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
      • crashlytics.newFatalIssue: 앱에서 새로운 치명적인 비정상 종료가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
      • crashlytics.newNonfatalIssue: 앱에 심각하지 않은 새로운 오류가 발생하면 이벤트가 전송됩니다(동일한 후속 이벤트에는 해당되지 않음).
      • crashlytics.regression: 이전 앱 버전에서 종료됨으로 표시된 문제로 인해 앱에 비정상 종료가 발생하면 이벤트가 전송됩니다.
      • crashlytics.stabilityDigest: Crashlytics에서 가장 많이 발생하는 문제에 대한 알림이 발생하면 이벤트가 전송됩니다.
      • crashlytics.velocity: 단일 문제가 상당한 수의 앱 세션에 비정상 종료를 유발하면 이벤트가 전송됩니다.
    4. 특정 Firebase 앱 ID의 이벤트를 선택적으로 필터링할 수 있습니다. 필터 추가를 클릭하고 appid를 지정합니다.

      정확히 일치해야 합니다.

    Firebase 실시간 데이터베이스

    Firebase 실시간 데이터베이스에서 데이터가 생성, 업데이트, 삭제될 때 이벤트에 대한 응답으로 서비스 요청이 트리거됩니다.

    1. 직접 아래에 나열된 이벤트에서 다음 중 하나를 선택합니다.

      • google.firebase.database.ref.v1.created: 데이터가 데이터베이스에 생성될 때 이벤트가 전송됩니다.
      • google.firebase.database.ref.v1.updated: 데이터가 데이터베이스에서 업데이트될 때 이벤트가 전송됩니다.
      • google.firebase.database.ref.v1.deleted: 데이터가 데이터베이스에서 삭제될 때 이벤트가 전송됩니다.
      • google.firebase.database.ref.v1.written: 데이터가 데이터베이스에서 생성, 업데이트, 삭제될 때 이벤트가 전송됩니다.
    2. 리전 목록에서 리전을 선택합니다.

      이 리전은 Firebase 실시간 데이터베이스 인스턴스 리전과 일치해야 합니다. 자세한 내용은 Eventarc 위치를 참조하세요.

    3. 필터 섹션에서 다음을 선택합니다.

      1. 데이터베이스 인스턴스 속성에 대해 다음 중 하나를 연산자로 선택합니다.
      2. 속성 값 1 필드에서 이벤트를 수신할 데이터베이스 인스턴스 이름을 입력합니다. 이전 단계에서 선택한 연산자에 따라 속성 값은 현재 상태 그대로 또는 경로 패턴 형식의 데이터베이스 인스턴스 이름이어야 합니다.
      3. ref 속성의 경우 연산자를 경로 패턴으로 선택합니다.
      4. 속성 값 2 필드에서 해당 경로 또는 하위 항목에서 데이터가 생성, 업데이트, 삭제될 때 이벤트를 수신할 데이터베이스 인스턴스 경로를 입력합니다.

    Firebase 원격 구성

    서비스 요청은 원격 구성 템플릿이 업데이트될 때 이벤트에 대한 응답으로 트리거됩니다.

    1. 직접에 나열된 이벤트에서 google.firebase.remoteconfig.remoteConfig.v1.updated를 선택합니다.

    2. 리전 목록에서 전역(전역)을 선택합니다.

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

    Firebase Test Lab

    TestMatrix가 완료되면 서비스 요청이 이벤트에 대한 응답으로 트리거됩니다.

    1. 직접에 나열된 이벤트에서 google.firebase.testlab.testMatrix.v1.completed를 선택합니다.

    2. 리전 목록에서 전역(전역)을 선택합니다.

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

    Cloud 감사 로그 사용

    서비스 요청은 트리거의 필터 기준과 일치하는 감사 로그가 생성되면 트리거됩니다. 이 유형의 이벤트는 모든 이벤트 제공자에게 적용됩니다.

    1. Cloud 감사 로그 사용에 나열된 이벤트에서 하나를 선택합니다.

    2. 다음 중 하나를 선택합니다.

      • 모든 리소스 — 기본값이며 생성 시 생성된 식별자가 있는 동적으로 생성된 리소스를 포함합니다.

      • 특정 리소스 — 전체 리소스 이름을 제공해야 합니다.

      • 경로 패턴경로 패턴을 사용하여 리소스를 필터링할 수 있습니다. 예를 들어 projects/_/buckets/eventarc-bucket/objects/random.txt 또는 projects/_/buckets/**/r*.txt를 입력합니다.

    3. 리전을 선택합니다.

      Eventarc용 Cloud 감사 로그 트리거는 특정 리전 및 전역 리전에서 사용할 수 있지만 이중 리전 및 멀티 리전 위치에서는 사용할 수 없습니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치하는 것이 좋습니다.

      전역 위치를 지정하면 이벤트 필터가 일치하는 모든 위치에서 이벤트가 수신됩니다. 예를 들어 전역 Eventarc 트리거를 만들면 EU 및 미국 멀티 리전의 리소스에서 이벤트를 수신할 수 있습니다.

    트리거의 필터 기준과 일치하는 감사 로그가 생성될 때 트리거되는 이벤트 캡처에 대한 자세한 내용은 Cloud 감사 로그의 이벤트 필터 확인을 참조하세요.

  9. Cloud Run 서비스를 호출하는 서비스 계정을 선택합니다.

    또는 새 서비스 계정을 만듭니다.

    이렇게 하면 트리거와 연결된 IAM 서비스 계정 이메일이 지정됩니다. Cloud Run 대상의 경우 서비스를 호출할 때 ID 토큰을 생성하는 데 이 서비스 계정이 사용됩니다.

  10. 선택적으로 수신 요청을 전송할 서비스 URL 경로를 지정합니다.

    이는 트리거의 이벤트가 전송되어야 하는 대상 서비스의 상대 경로입니다. 예: /, /route, route, route/subroute

  11. 트리거를 만든 후에는 트리거 탭에 체크 표시 이 있는지 확인하면 상태를 확인합니다.

다음 단계