[Eventarc] Eventarc for Cloud Run

yejin·2일 전

Google Skills

목록 보기
45/46

Course

Build Event-Driven Applications with Eventarc

Lab

목록

  • Pub/Sub: Qwik Start - Command Line
  • Cloud Run Functions: Qwik Start
  • Eventarc for Cloud Run ⬅️ 오늘의 Lab!
  • Build Event-Driven Applications with Eventarc: Challenge Lab

🌠 Eventarc for Cloud Run

개요

  • Cloud Run용 Eventarc
  • Cloud Run 싱크 만들기
  • Cloud Pub/Sub용 이벤트 트리거 만들기
  • 감사 로그의 이벤트 트리거 만들기

실습과정

1. 환경 설정

주의 ✅

실습 계정마다 프로젝트 관련 환경 설정이 다르기 때문에, 각자에 맞는 환경으로 세팅 필요!

# 프로젝트 설정
gcloud config set project "PROJECT_ID"

# 리전 설정
gcloud config set run/region "REGION"

# Cloud Run 플랫폼 기본값 설정
gcloud config set run/platform managed

# Eventarc 기본 위치 설정
gcloud config set eventarc/location "REGION"

2. 서비스 계정 사용 설정

(1) 프로젝트 번호 환경변 수 설정

export PROJECT_NUMBER="$(gcloud projects list \
  --filter=$(gcloud config get-value project) \
  --format='value(PROJECT_NUMBER)')"

(2) eventarc.admin 역할을 부여

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
  --role='roles/eventarc.admin'

3. 이벤트 탐색

(1) 이벤트 목록 확인

gcloud eventarc providers list

(2) 각 이벤트에 대한 상세 정보 확인

gcloud eventarc providers describe \
  pubsub.googleapis.com

4. Cloud Run 싱크 만들기

(1) 환경변수 설정

# 서비스에 대한 환경 변수 설정
export SERVICE_NAME=event-display

# 이미지의 환경변수 설정
export IMAGE_NAME="gcr.io/cloudrun/hello"

(2) 배포

gcloud run deploy ${SERVICE_NAME} \
  --image ${IMAGE_NAME} \
  --allow-unauthenticated \
  --max-instances=3

✅ 컨테이너화된 애플리케이션을 Cloud Run에 배포
✅ 배포가 성공하면 명령줄에 서비스 URL이 표시되며, 이 시점에서 서비스가 실행된다.


5. Cloud Pub/Sub 이벤트 트리거

(1) 트리거 파라미터 정보 확인

gcloud eventarc providers describe \
  pubsub.googleapis.com

(2) 이벤트 필터링 트리거 생성

gcloud eventarc triggers create trigger-pubsub \
  --destination-run-service=${SERVICE_NAME} \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

(3) 주제 찾기

# Topic ID 환경변수 설정
export TOPIC_ID=$(gcloud eventarc triggers describe trigger-pubsub \
  --format='value(transport.pubsub.topic)')

# 환경변수 확인
echo ${TOPIC_ID}

(4) 트리거 생성 확인

gcloud eventarc triggers list

(5) 테스트

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"

✅ 커스텀 애플리케이션이 메시지를 전송하는 것을 시뮬레이션하기 위해 gcloud 명령어를 사용하여 이벤트를 발생 시키기

(6) 테스트 결과 확인

✅ 메뉴: Serverless > Cloud Run > event-display > Logs
✅ 로그 내용을 통해 테스트 결과 확인 가능하다.

(7) 트리거 삭제

gcloud eventarc triggers delete trigger-pubsub

6. 감사 로그 이벤트 트리거 만들기

(1) 버킷 만들기

# 환경 변수 설정
export BUCKET_NAME=$(gcloud config get-value project)-cr-bucket

# 버킷 생성
gsutil mb -p $(gcloud config get-value project) \
  -l $(gcloud config get-value run/region) \
  gs://${BUCKET_NAME}/

(2) 감사 로그 사용 설정


✅ 메뉴: IAM 및 관리자(IAM & Admins) > 감사 로그(Aduit logs)
Google Cloud Storage 선택 후 Admin Read, Data Read, Data Write

(3) 테스트

# 텍스트 파일 생성
echo "Hello World" > random.txt

# 파일을 버킷에 업로드
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt

✅ Logging > 로그 탐색기(Log Explorer) > All Resources > GCS Bucket > [버킷이름] > 위치(location) 선택

✅ 쿼리 실행(Run Query)

(4) 트리거 만들기

주의🤖


실습 명령어에서는 --location 옵션이 생략되어 있어서 오류 발생했다.
자신의 환경에 맞는 location으로 수정하여 명령어를 실행해야 한다.

# 트리거 구성에 필요한 파라미터 확인
gcloud eventarc providers describe cloudaudit.googleapis.com --location="LOCATION"

gcloud eventarc triggers create trigger-auditlog \
  --destination-run-service=${SERVICE_NAME} \
  --destination-run-region=us-west1 \
  --location="LOCATION" \
  --event-filters="type=google.cloud.audit.log.v1.written" \
  --event-filters="serviceName=storage.googleapis.com" \
  --event-filters="methodName=storage.objects.create" \
  --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

참고✨

Cloud Shell 창을 닫았다가 다시 켤 경우에는 설정해둔 환경변수가 삭제되므로, 명령어 실행 전에 ${SERVICE_NAME}, ${PROJECT_NUMBER} 등 설정이 잘 되어 있는지 확인하기!

(5) 트리거 확인

gcloud eventarc triggers list

(6) 트리거 테스트


gsutil cp random.txt gs://${BUCKET_NAME}/random.txt

(7) 트리거 삭제

gcloud eventarc triggers delete trigger-auditlog --location="LOCATION"
profile
새싹 개발자

0개의 댓글