Build Event-Driven Applications with Eventarc

목록
- Pub/Sub: Qwik Start - Command Line
- Cloud Run Functions: Qwik Start
- Eventarc for Cloud Run ⬅️ 오늘의 Lab!
- Build Event-Driven Applications with Eventarc: Challenge Lab
주의 ✅
실습 계정마다 프로젝트 관련 환경 설정이 다르기 때문에, 각자에 맞는 환경으로 세팅 필요!

# 프로젝트 설정
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"

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

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

gcloud eventarc providers list

gcloud eventarc providers describe \
pubsub.googleapis.com

# 서비스에 대한 환경 변수 설정
export SERVICE_NAME=event-display
# 이미지의 환경변수 설정
export IMAGE_NAME="gcr.io/cloudrun/hello"

gcloud run deploy ${SERVICE_NAME} \
--image ${IMAGE_NAME} \
--allow-unauthenticated \
--max-instances=3
✅ 컨테이너화된 애플리케이션을 Cloud Run에 배포
✅ 배포가 성공하면 명령줄에 서비스 URL이 표시되며, 이 시점에서 서비스가 실행된다.

gcloud eventarc providers describe \
pubsub.googleapis.com

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

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

gcloud eventarc triggers list

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
✅ 커스텀 애플리케이션이 메시지를 전송하는 것을 시뮬레이션하기 위해 gcloud 명령어를 사용하여 이벤트를 발생 시키기

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

gcloud eventarc triggers delete trigger-pubsub

# 환경 변수 설정
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}/

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

# 텍스트 파일 생성
echo "Hello World" > random.txt
# 파일을 버킷에 업로드
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt

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

✅ 쿼리 실행(Run Query)
주의🤖
실습 명령어에서는--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}등 설정이 잘 되어 있는지 확인하기!

gcloud eventarc triggers list


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

gcloud eventarc triggers delete trigger-auditlog --location="LOCATION"