Eventarc ์œ„์น˜ ์ดํ•ด

๊ฐ ์ด๋ฒคํŠธ ์†Œ์Šค, ์ด๋ฒคํŠธ ๋Œ€์ƒ, Eventarc ํŠธ๋ฆฌ๊ฑฐ์—๋Š” ์ž์ฒด์ ์ธ ์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ด๋Ÿฌํ•œ ์œ„์น˜๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋‹ฌ๋ผ๋„ ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์†Œ์Šค ์œ„์น˜

์ด๋ฒคํŠธ ์†Œ์Šค์˜ ์œ„์น˜์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ Cloud Storage ๋ฒ„ํ‚ท์ด europe-west1 ๋ฆฌ์ „์— ์žˆ์œผ๋ฏ€๋กœ ํŠธ๋ฆฌ๊ฑฐ๋„ europe-west1์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๋Œ€์ƒ ์œ„์น˜

์ด๋ฒคํŠธ ๋Œ€์ƒ(์˜ˆ: Cloud Run ์„œ๋น„์Šค)์„ ๋ฐฐํฌํ•  ๋•Œ ์ง€์›๋˜๋Š” ๋ฆฌ์ „์„ ์œ„์น˜๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๋ฐ์ดํ„ฐ ์ง€์—ญ ์ด์œ ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ ์†Œ์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ํ•„์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์•ž์˜ ์˜ˆ์‹œ์—์„œ ์ด๋ฒคํŠธ ์†Œ์Šค๋Š” europe-west1์— ์žˆ๋Š” ๋ฐ˜๋ฉด --destination-run-region ํ”Œ๋ž˜๊ทธ๋Š” ์ด๋ฒคํŠธ ๋Œ€์ƒ์ด us-central1์— ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜

๋˜ํ•œ ๋งŒ๋“œ๋Š” Eventarc ํŠธ๋ฆฌ๊ฑฐ ์œ ํ˜•์€ --location ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ ํŠธ๋ฆฌ๊ฑฐ์˜ ์œ„์น˜์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ

Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์‚ฌ ๋กœ๊ทธ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ ์†Œ์Šค๋ฅผ ์ด๋ฒคํŠธ ๋Œ€์ƒ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud ๊ฐ์‚ฌ ๋กœ๊ทธ ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋‹จ์ผ ๋ฆฌ์ „ ์œ„์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ „์—ญ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ค‘ ๋ฆฌ์ „ ๋ฐ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์—์„œ๋Š” ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์†Œ์Šค์˜ ์œ„์น˜์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์œ„์น˜๋Š” ๋‹จ์ผ ๋ฆฌ์ „ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ์‚ฌ ๋กœ๊ทธ ํŠธ๋ฆฌ๊ฑฐ๋กœ europe-west1 ๋ฆฌ์ „์— ์žˆ๋Š” ๋ฒ„ํ‚ท์—์„œ ๋ฐœ์ƒํ•œ Cloud Storage ์ด๋ฒคํŠธ๋ฅผ ์บก์ฒ˜ํ•˜๋ ค๋ฉด ๋™์ผํ•œ ์œ„์น˜์— ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud eventarc triggers create trigger-auditlog \
  --destination-run-service=hello \
  --destination-run-region=us-central1 \
  --location=europe-west1 \
  --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 ๊ฐ์‚ฌ ๋กœ๊ทธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฒ„ํ‚ท๋ณ„ ํ•„ํ„ฐ๋ง์ด ์—†์œผ๋ฏ€๋กœ europe-west1 ๋ฆฌ์ „์˜ ๋ชจ๋“  ๋ฒ„ํ‚ท๊ณผ ์ผ์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. (๋ฒ„ํ‚ท๋ณ„๋กœ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ์ง์ ‘ Cloud Storage ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

๋˜๋Š” eu์™€ ๊ฐ™์€ ์ด์ค‘ ๋ฆฌ์ „์ด๋‚˜ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ๋ฒ„ํ‚ท๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๋ฉด global ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๋ฆฌ์ „ ๋‚ด ๋ชจ๋“  ๋ฒ„ํ‚ท์ด ๋‹ค์Œ๊ณผ ์ผ์น˜ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•„ํ„ฐ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

gcloud eventarc triggers create trigger-storage \
  --destination-run-service=hello \
  --destination-run-region=us-central1 \
  --location=global \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=my-bucket-in-europe-west1-region" \
  --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com

Cloud Storage

Cloud Storage ํŠธ๋ฆฌ๊ฑฐ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ, ์‚ญ์ œ, ๋ณด๊ด€์ฒ˜๋ฆฌ, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ์™€ ๊ฐ™์€ Cloud Storage ๋ฒ„ํ‚ท ๋‚ด ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. Cloud Storage ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋‹จ์ผ ๋ฆฌ์ „, ์ด์ค‘ ๋ฆฌ์ „, ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์—ญ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Cloud Storage ๋ฒ„ํ‚ท ์œ„์น˜๋Š” Eventarc ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋ฉฐ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜๋Š” Cloud Storage ๋ฒ„ํ‚ท(eu ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜) ์œ„์น˜์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฒ„ํ‚ท๊ณผ ํŠธ๋ฆฌ๊ฑฐ ๋ฆฌ์ „์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was
invalid: Bucket "my-bucket-in-eu-multi-region" location "eu" does not match
trigger location "europe-west1". Try again by creating the trigger in "eu".

Pub/Sub

Pub/Sub ํŠธ๋ฆฌ๊ฑฐ๋Š” Pub/Sub ์ฃผ์ œ๋ฅผ ์ด๋ฒคํŠธ ๋Œ€์ƒ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ฆฌ์ „ ์œ„์น˜์—์„œ๋งŒ Pub/Sub ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ „์—ญ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Pub/Sub ์ฃผ์ œ๋Š” ์ „์—ญ ๋ฆฌ์†Œ์Šค์ด๋ฉฐ ๋‹จ์ผ ๋ฆฌ์ „์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์ง€๋งŒ Pub/Sub ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ๋•Œ --location ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ „์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

gcloud eventarc triggers create trigger-pubsub \
--destination-run-service=hello \
--destination-run-region=us-central1 \
--location=us-central1 \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/your-projectid/topics/your-topic

Eventarc๋Š” Pub/Sub ์ด๋ฒคํŠธ๊ฐ€ ์ง€์ •๋œ ์œ„์น˜์—์„œ๋งŒ ์ง€์†๋˜๋„๋ก ์ง€์˜คํŽœ์‹ฑ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹จ์ผ ๋ฆฌ์ „์— ์œ ์ง€๋˜๋„๋ก ๋ฆฌ์ „ Pub/Sub ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์ œ์— ๊ฒŒ์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„

  • ์—ฌ๋Ÿฌ Google Cloud ํ”„๋กœ์ ํŠธ์— ๊ฑธ์ณ ์ด๋ฒคํŠธ๋ฅผ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.