Eventarc 트리거는 특정 이벤트 또는 이벤트 집합에 관심이 있음을 선언합니다. 트리거 필터를 지정하여 이벤트 소스와 대상 Cloud Run 서비스를 포함한 이벤트 라우팅을 구성할 수 있습니다.
Eventarc는 HTTP 요청을 통해 이벤트를 CloudEvents 형식으로 이벤트 수신자에게 전달합니다.
이 안내에서는 트리거 필터 기준과 일치하는 감사 로그가 생성되었을 때 트리거되는 Cloud Run 서비스로 라우팅을 구성하는 방법을 보여줍니다. serviceName
및 methodName
값을 포함하여 Eventarc에서 지원되는 감사 로그 이벤트 목록은 Eventarc에서 지원되는 이벤트 유형을 참조하세요.
트리거의 필터 기준과 일치하는 감사 로그가 생성될 때 트리거되는 이벤트 캡처에 대한 자세한 내용은 Cloud 감사 로그의 이벤트 필터 확인을 참조하세요.
트리거 만들기 준비
트리거를 만들기 전에 다음 기본 요건을 충족하세요.
콘솔
Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 만들거나 선택합니다.
Cloud Logging, Eventarc, Eventarc Publishing API를 사용 설정합니다.
해당하는 경우 Cloud 감사 로그 이벤트와 관련된 API를 사용 설정합니다. 예를 들어 Cloud Run Functions 감사 로그의 경우 Cloud Functions API를 사용 설정합니다.
아직 계정이 없는 경우 사용자 관리형 서비스 계정을 만들고 Eventarc에서 대상 서비스의 이벤트를 관리할 수 있도록 필요한 역할과 권한을 계정에 부여합니다.
Google Cloud 콘솔에서 서비스 계정 만들기 페이지로 이동합니다.
프로젝트를 선택합니다.
서비스 계정 이름 필드에 이름을 입력합니다. Google Cloud 콘솔은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.
서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면
Service account for event trigger
입니다.만들고 계속하기를 클릭합니다.
적절한 액세스 권한을 제공하려면 역할 선택 목록에서 인증되었거나 인증되지 않은 호출과 관련해 서비스 계정에 부여할 필수 Identity and Access Management(IAM) 역할을 선택합니다. 자세한 내용은 Cloud Run 대상의 역할 및 권한을 참조하세요.
역할을 추가하려면
다른 역할 추가를 클릭하고 각 역할을 추가합니다.계속을 클릭합니다.
계정 만들기를 마치려면 완료를 클릭합니다.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Cloud Logging, Eventarc, Eventarc Publishing API를 사용 설정합니다.
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
해당하는 경우 Cloud 감사 로그 이벤트와 관련된 API를 사용 설정합니다. 예를 들어 Cloud Run Functions 감사 로그의 경우
cloudfunctions.googleapis.com
을 사용 설정합니다.아직 계정이 없는 경우 사용자 관리형 서비스 계정을 만들고 Eventarc에서 대상 서비스의 이벤트를 관리할 수 있도록 필요한 역할과 권한을 계정에 부여합니다.
서비스 계정을 만듭니다.
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
을 서비스 계정 이름으로 바꿉니다. 6~30자(영문 기준) 사이여야 하며 소문자 영숫자 문자와 대시를 포함할 수 있습니다. 서비스 계정을 만든 후에는 이름을 변경할 수 없습니다.인증되었거나 인증되지 않은 호출에 필요한 Identity and Access Management(IAM) 역할 또는 권한을 부여합니다. 자세한 내용은 Cloud Run 대상의 역할 및 권한을 참조하세요.
트리거 만들기
Google Cloud CLI를 사용하거나 Google Cloud 콘솔을 통해 Eventarc 트리거를 만들 수 있습니다.
콘솔
- Google Cloud 콘솔에서 Eventarc 트리거 페이지로 이동합니다.
- 트리거 만들기를 클릭합니다.
- 트리거 이름을 입력합니다.
트리거의 ID이며 문자로 시작해야 합니다. 최대 63자(영문 기준)의 소문자, 숫자, 하이픈을 포함할 수 있습니다.
- 트리거 유형으로 Google 소스를 선택합니다.
- 이벤트 제공자를 선택합니다.
감사 로그를 통한 이벤트 소스인 Google 서비스입니다. 예를 들어 BigQuery를 선택합니다.
연결된 Google Cloud 문서에 사용된 이벤트 제공자 이름에 Cloud 또는 Google Cloud 프리픽스가 없을 수 있습니다. 예를 들어 콘솔에서는 Redis용 Memorystore를 Redis용 Google Cloud Memorystore라고 합니다.
- 이벤트 유형 목록의 Cloud 감사 로그 사용 이벤트에서 이벤트 유형을 선택합니다.
- 다음 중 하나를 선택합니다.
- 모든 리소스 - 기본값이며 생성 시 생성된 식별자가 있는 동적으로 생성된 리소스를 포함합니다.
- 특정 리소스 - 전체 리소스 이름을 제공해야 합니다.
- 경로 패턴 - 경로 패턴을 사용하여 리소스를 필터링할 수 있습니다.
예를 들어
projects/_/buckets/eventarc-bucket/objects/random.txt
또는projects/_/buckets/**/r*.txt
를 입력합니다.
- 이벤트 페이로드의 인코딩을 지정하려면 이벤트 데이터 콘텐츠 유형 목록에서 application/json 또는 application/protobuf를 선택합니다.
JSON으로 형식이 지정된 이벤트 페이로드는 Protobuf로 형식이 지정된 이벤트 페이로드보다 큽니다. 그로 인해 이벤트 대상 및 이벤트 크기 한도에 따라 안정성에 영향을 미칠 수 있습니다. 자세한 내용은 알려진 문제를 참조하세요.
- 리전 목록에서 리전을 선택합니다.
Eventarc용 Cloud 감사 로그 트리거는 특정 리전 및 전역 리전에서 사용할 수 있지만 이중 리전 및 멀티 리전 위치에서는 사용할 수 없습니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치하는 것이 좋습니다. 자세한 내용은 Eventarc 위치를 참조하세요.
전역 위치를 지정하면 이벤트 필터와 일치하는 모든 위치에서 이벤트가 수신됩니다. 예를 들어 전역 Eventarc 트리거를 만들면 EU 및 미국 멀티 리전의 리소스에서 이벤트를 수신할 수 있습니다.
참고로 단일 리전
us-central1
에서 발생하는 이벤트를 발생시키는 Compute Engine에 대한 Cloud 감사 로그 트리거에는 알려진 문제가 있습니다. 이 문제는 가상 머신 인스턴스가 실제로 있는 위치와는 관계없습니다. 트리거를 만들 때 트리거 위치를us-central1
또는global
로 설정합니다. - 서비스 또는 워크플로를 호출할 서비스 계정을 선택합니다.
또는 새 서비스 계정을 만들 수 있습니다.
이는 트리거와 연결되어 있고 이전에 Eventarc에 필요한 특정 역할을 부여한 Identity and Access Management(IAM) 서비스 계정 이메일을 지정합니다.
- 이벤트 대상 목록에서 Cloud Run을 선택합니다.
- 서비스를 선택합니다.
트리거의 이벤트를 수신하는 서비스의 이름입니다. 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 기준 URL 경로(
/
)로 전송되는 HTTP POST 요청으로 수신합니다. - 필요한 경우, 들어오는 요청을 보낼 서비스 URL 경로를 지정할 수 있습니다.
이는 트리거의 이벤트가 전송되어야 하는 대상 서비스의 상대 경로입니다. 예를 들면
/
,/route
,route
,route/subroute
입니다. - 만들기를 클릭합니다.
트리거가 생성된 후에는 이벤트 소스 필터를 수정할 수 없습니다. 대신 새 트리거를 만들고 이전 트리거를 삭제합니다. 자세한 내용은 트리거 관리를 참조하세요.
gcloud
필수 및 선택적 플래그와 함께 gcloud eventarc triggers create
명령어를 실행하여 트리거를 만들 수 있습니다.
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" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
다음을 바꿉니다.
TRIGGER
: 트리거의 ID 또는 정규화된 식별자입니다.LOCATION
: Eventarc 트리거 위치입니다. 또는eventarc/location
속성을 설정할 수 있습니다(예:gcloud config set eventarc/location us-central1
).Eventarc용 Cloud 감사 로그 트리거는 특정 리전 및 전역 리전에서 사용할 수 있지만 이중 리전 및 멀티 리전 위치에서는 사용할 수 없습니다. 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지하려면 이 위치가 이벤트를 생성하는 Google Cloud 서비스의 위치와 일치하는 것이 좋습니다. 자세한 내용은 Eventarc 위치를 참조하세요.
전역 위치를 지정하면 이벤트 필터와 일치하는 모든 위치에서 이벤트가 수신됩니다. 예를 들어 전역 Eventarc 트리거를 만들면 EU 및 미국 멀티 리전의 리소스에서 이벤트를 수신할 수 있습니다.
단일 리전
us-central1
에서 발생하는 이벤트를 발생시키는 Compute Engine에 대한 Cloud 감사 로그 트리거에는 알려진 문제가 있습니다. 이 위치는 가상 머신 인스턴스가 실제로 있는 위치에 관계없습니다. 트리거를 만들 때 트리거 위치를us-central1
또는global
로 설정합니다.-
DESTINATION_RUN_SERVICE
: 트리거의 이벤트를 수신하는 Cloud Run 서비스의 이름입니다. 서비스는 Cloud Run에서 지원하는 모든 위치에 있을 수 있으며 트리거와 동일한 위치에 있지 않아도 됩니다. 그러나 서비스는 트리거와 동일한 프로젝트에 있어야 하며 이벤트가 생성될 때마다 해당 이벤트를 기준 URL 경로(/
)로 전송되는 HTTP POST 요청으로 수신합니다. -
DESTINATION_RUN_REGION
: (선택사항) 대상 Cloud Run 서비스를 찾을 수 있는 리전입니다. 이 리전이 지정되지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다.
SERVICE_NAME
: Google Cloud 서비스의 식별자METHOD_NAME
: 작업의 식별자
-
EVENT_DATA_CONTENT_TYPE
: (선택사항) 이벤트 페이로드의 인코딩입니다. 이 값은application/json
또는application/protobuf
입니다. 기본 인코딩은application/json
입니다.JSON으로 형식이 지정된 이벤트 페이로드는 Protobuf로 형식이 지정된 이벤트 페이로드보다 큽니다. 그로 인해 이벤트 대상 및 이벤트 크기 한도에 따라 안정성에 영향을 미칠 수 있습니다. 자세한 내용은 알려진 문제를 참조하세요.
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
,...] 플래그에 쉼표로 구분하여 입력) 플래그를 반복하여 필터를 추가할 수 있습니다. 모든 필터와 일치하는 이벤트만 대상으로 전송됩니다. 와일드 카드와 정규 표현식은 지원되지 않습니다. - 트리거가 생성된 후에는 이벤트 필터 유형을 변경할 수 없습니다. 다른 이벤트 유형의 경우 새 트리거를 만들어야 합니다.
--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.cloud.audit.log.v1.written" \
--event-filters="serviceName=bigquery.googleapis.com" \
--event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
bigquery.googleapis.com
에서 작성된 감사 로그와 google.cloud.bigquery.v2.JobService.InsertJob
로 식별된 작업에 대한 helloworld-trigger
라는 이름의 트리거가 생성됩니다.
Terraform
Terraform을 사용하여 Cloud Run 대상에 대한 트리거를 만들 수 있습니다. 자세한 내용은 Terraform을 사용하여 트리거 만들기를 참조하세요.
트리거 나열
Google Cloud CLI를 사용하거나 Google Cloud 콘솔을 통해 Eventarc 트리거를 나열하여 트리거 생성을 확인할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Eventarc 트리거 페이지로 이동합니다.
이 페이지에서는 모든 위치의 트리거를 나열하고 이름, 리전, 이벤트 제공자, 대상 등과 같은 세부정보를 포함합니다.
트리거를 필터링하려면 다음 안내를 따르세요.
- 필터 또는 트리거 필터링 필드를 클릭합니다.
- 속성 목록에서 트리거를 필터링하는 옵션을 선택합니다.
단일 속성을 선택하거나
OR
논리 연산자를 사용하여 속성을 추가할 수 있습니다.트리거를 정렬하려면 지원되는 열 제목 옆에 있는
정렬을 클릭합니다.
gcloud
다음 명령어를 실행하여 트리거를 나열합니다.
gcloud eventarc triggers list --location=-
이 명령어는 모든 위치의 트리거를 나열하고 이름, 유형, 대상, 상태와 같은 세부정보를 포함합니다.