트리거 만들기

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

서비스에 대한 요청은 Pub/Sub 주제에 게시된 메시지로 트리거되거나 트리거의 필터 기준과 일치하는 감사 로그가 생성된 경우에 트리거됩니다.

gcloud 명령줄 도구를 사용하거나 Google Cloud Console을 통해 트리거를 만들 수 있습니다.

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

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

새 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 트리거의 위치입니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1). 자세한 내용은 Eventarc 위치를 참조하세요.
  • DESTINATION_RUN_SERVICE는 트리거 이벤트를 수신하는 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라는 트리거가 생성됩니다.

기존 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 트리거의 위치입니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1). 자세한 내용은 Eventarc 위치를 참조하세요.
  • DESTINATION_RUN_SERVICE는 트리거 이벤트를 수신하는 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이라는 이름의 트리거가 생성됩니다.

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 트리거의 위치입니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치해야 합니다. 또는 eventarc/location 속성을 설정할 수 있습니다(예: gcloud config set eventarc/location us-central1). 자세한 내용은 Eventarc 위치를 참조하세요.
  • DESTINATION_RUN_SERVICE는 트리거 이벤트를 수신하는 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" 플래그를 사용하고 리소스의 전체 경로를 지정하여 특정 리소스의 이벤트를 필터링할 수 있습니다. 생성 시에 식별자가 생성된 동적으로 생성된 리소스는 플래그를 생략합니다.
  • 선택에 따라 --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라는 이름의 트리거가 생성됩니다.

Console을 통해 트리거 만들기

Cloud Console을 사용하여 필터가 포함된 트리거를 만들 수 있습니다.

  1. Cloud Console에서 Cloud Run으로 이동합니다.

    Cloud Run으로 이동

  2. 서비스 목록에서 서비스를 클릭합니다.

  3. 트리거 탭을 클릭하고 트리거 추가를 클릭합니다.

  4. 이벤트 선택 드롭다운 목록에서 지원되는 모든 서비스와 이벤트를 찾을 수 있습니다.

    Console을 통해 트리거 추가하기

  5. 서비스를 선택하고 나면 이벤트를 선택할 수 있습니다.

    예를 들어 Cloud Storage > storage.objects.create를 선택합니다.

    필터링할 이벤트를 확인해야 합니다. Cloud 감사 로그의 이벤트 필터 확인을 참조하세요.

  6. Cloud Pub/Sub 주제 이벤트를 선택하면 기존 주제를 선택하거나 트리거의 새 주제를 만들 수 있습니다.

    참고: 기본적으로 Eventarc용으로 생성된 Pub/Sub 구독은 활동과 관계없이 유지되며 만료되지 않습니다. 비활성 기간을 변경하려면 구독 관리를 참조하세요.
  7. 다른 모든 이벤트의 경우 전체 리소스 이름 필드에서 선택적으로 리소스의 전체 경로를 지정할 수 있습니다.

    예를 들어 projects/_/buckets/eventarc-bucket/objects/random.txt를 입력합니다.

    생성 시에 식별자가 생성된 동적으로 생성된 리소스는 이 필드를 비워둡니다.

  8. 이벤트를 수신할 위치를 선택합니다.

  9. Cloud Run 서비스를 호출하는 서비스 계정을 구성하고 수신되는 요청을 전송할 서비스 URL 경로를 지정합니다.

    Cloud Run 대상의 경우 서비스를 호출할 때 ID 토큰을 생성하는 데 이 서비스 계정이 사용됩니다.

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

다음 단계