۱. مقدمه

Cloud Run به شما امکان میدهد کانتینرهای بدون وضعیت را در یک محیط کاملاً مدیریتشده اجرا کنید. این ابزار بر اساس Knative متنباز ساخته شده است و به شما امکان میدهد کانتینرهای خود را یا کاملاً مدیریتشده با Cloud Run یا در خوشه Google Kubernetes Engine خود با Cloud Run برای Anthos اجرا کنید.

Eventarc اتصال سرویسهای مختلف (Cloud Run، Cloud Functions، Workfklows) را با رویدادهایی از منابع مختلف آسان میکند. این به شما امکان میدهد معماریهای رویدادمحور بسازید که در آنها میکروسرویسها به صورت آزادانه جفت و توزیع شدهاند. همچنین از دریافت، تحویل، امنیت، مجوزدهی و مدیریت خطا برای شما مراقبت میکند که چابکی توسعهدهنده و انعطافپذیری برنامه را بهبود میبخشد.
در این آزمایشگاه کد، شما در مورد Eventarc یاد خواهید گرفت. به طور خاص، شما با Eventarc به رویدادهای Pub/Sub، Cloud Storage و Cloud Audit Logs گوش خواهید داد و آنها را به یک سرویس Cloud Run منتقل خواهید کرد.
آنچه یاد خواهید گرفت
- چشمانداز ایونتارک
- رویدادهای Eventarc را کشف کنید
- یک سینک Cloud Run ایجاد کنید
- یک تریگر برای Pub/Sub ایجاد کنید
- ایجاد یک تریگر برای فضای ذخیرهسازی ابری
- ایجاد یک تریگر برای گزارشهای حسابرسی ابری
- رابط کاربری Eventarc را بررسی کنید
۲. چشمانداز ایونتارک
هدف Eventarc ارائه رویدادها از منابع مختلف رویدادهای گوگل، گوگل کلود و شخص ثالث به مقاصد رویدادهای گوگل کلود است.

منابع ابری گوگل | منابع رویدادی که متعلق به محصولات Google Cloud هستند |
منابع گوگل | منابع رویداد که متعلق به محصولات گوگل هستند مانند Gmail، Hangouts، Android Management و موارد دیگر |
منابع سفارشی | منابع رویدادی که متعلق به گوگل نیستند و توسط خود کاربران نهایی ایجاد شدهاند |
منابع شخص ثالث | منابع رویدادی که نه متعلق به گوگل هستند و نه توسط مشتری تولید میشوند. این شامل منابع رویداد محبوبی مانند Check Point CloudGuard، Datadog، ForgeRock، Lacework و غیره میشود که متعلق به ارائه دهندگان و شرکای شخص ثالث بوده و توسط آنها نگهداری میشوند. |
رویدادها برای قابلیت همکاری بین سرویسها، به فرمت CloudEvents نسخه ۱.۰ نرمالسازی شدهاند. CloudEvents یک استاندارد باز و بیطرف از نظر فروشنده است که دادههای رویداد را در قالبهای رایج توصیف میکند و امکان همکاری بین سرویسها، پلتفرمها و سیستمها را فراهم میکند.
۳. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه ، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود و شما میتوانید آن را در هر زمانی بهروزرسانی کنید.
- شناسه پروژه باید در تمام پروژههای گوگل کلود منحصر به فرد باشد و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاههای کد، باید به شناسه پروژه ارجاع دهید (و معمولاً با نام
PROJECT_IDشناخته میشود)، بنابراین اگر آن را دوست ندارید، یک شناسه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. سپس پس از ایجاد پروژه، آن "منجمد" میشود. - یک مقدار سوم هم وجود دارد، شماره پروژه که برخی از APIها از آن استفاده میکنند. برای اطلاعات بیشتر در مورد هر سه این مقادیر به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/APIهای ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، دستورالعملهای «پاکسازی» موجود در انتهای آزمایشگاه کد را دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه را میتوان به سادگی با یک مرورگر انجام داد.
قبل از اینکه شروع کنی
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
۴. یک سرویس Cloud Run راهاندازی کنید
یک سرویس Cloud Run برای دریافت رویدادها مستقر کنید. شما کانتینر Hello مربوط به Cloud Run را مستقر خواهید کرد که محتویات CloudEvents را ثبت میکند.
ابتدا، سرویسهای مورد نیاز برای Cloud Run را فعال کنید:
gcloud services enable run.googleapis.com
کانتینر hello را در Cloud Run مستقر کنید:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
در صورت موفقیت، خط فرمان URL سرویس را نمایش میدهد. میتوانید URL سرویس را در هر پنجره مرورگری باز کنید تا مطمئن شوید که سرویس اکنون مستقر شده است.
۵. کشف رویداد
قبل از ایجاد تریگرها در Eventarc، میتوانید منابع رویداد، انواع رویدادهایی که میتوانند منتشر کنند و نحوه پیکربندی تریگرها برای مصرف آنها را کشف کنید.
برای مشاهده لیست انواع مختلف رویدادها:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
برای کسب اطلاعات بیشتر در مورد هر نوع رویداد:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
برای مشاهده لیست سرویسهایی که نوع خاصی از رویداد را منتشر میکنند:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
برای مشاهده لیست نام متدها (زیررویدادها) که هر سرویس میتواند منتشر کند:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
۶. یک تریگر Pub/Sub ایجاد کنید
یکی از راههای دریافت رویدادها از طریق Cloud Pub/Sub است. هر برنامهای میتواند پیامهایی را در Pub/Sub منتشر کند و این پیامها میتوانند از طریق Eventarc به Cloud Run ارسال شوند.
راهاندازی
قبل از ایجاد هرگونه تریگر، سرویسهای مورد نیاز برای Eventarc را فعال کنید:
gcloud services enable eventarc.googleapis.com
همچنین برای استفاده توسط تریگرها به یک حساب کاربری سرویس نیاز دارید. یک حساب کاربری سرویس ایجاد کنید:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
ایجاد کردن
یک تریگر برای فیلتر کردن رویدادهای منتشر شده در موضوع Pub/Sub در سرویس Cloud Run مستقر شده ما ایجاد کنید:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
تست
تریگر Pub/Sub یک موضوع (topic) مخفی ایجاد میکند. بیایید آن را پیدا کنیم و به یک متغیر اختصاص دهیم:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
از gcloud برای انتشار پیام در تاپیک استفاده کنید:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
سرویس Cloud Run بدنه پیام ورودی را ثبت میکند. میتوانید این را در بخش Logs نمونه Cloud Run خود مشاهده کنید:

با یک موضوع میخانه/زیرموضوع موجود ایجاد کنید
به طور پیشفرض، وقتی یک تریگر Pub/Sub ایجاد میکنید، Eventarc یک تاپیک در زیر پوشش ایجاد میکند تا شما بتوانید از آن به عنوان یک تاپیک انتقال بین برنامه خود و یک سرویس Cloud Run استفاده کنید. این برای ایجاد آسان و سریع یک تریگر پشتیبانی شده توسط Pub/Sub مفید است، اما گاهی اوقات ممکن است بخواهید از یک تاپیک موجود استفاده کنید. Eventarc به شما امکان میدهد یک تاپیک Pub/Sub موجود را در همان پروژه با پرچم --transport-topic gcloud مشخص کنید.
برای دیدن نحوهی کار این، یک موضوع Pub/Sub ایجاد کنید تا به عنوان موضوع حمل و نقل استفاده شود:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
یک تریگر ایجاد کنید:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
شما میتوانید با ارسال پیام به تاپیک زیر، تریگر را آزمایش کنید:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
۷. یک محرک ذخیرهسازی ابری ایجاد کنید
در این مرحله، یک تریگر (trigger) برای دریافت رویدادها از فضای ذخیرهسازی ابری (Cloud Storage) ایجاد خواهید کرد.
راهاندازی
ابتدا، یک باکت (bucket) برای دریافت رویدادها از موارد زیر ایجاد کنید:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
نقش eventarc.eventReceiver را اعطا کنید، تا حساب سرویس بتواند در یک تریگر Cloud Storage استفاده شود:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
همچنین باید نقش pubsub.publisher را به حساب سرویس Cloud Storage برای تریگرهای Cloud Storage اضافه کنید:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
ایجاد کردن
یک تریگر برای مسیریابی رویدادهای ایجاد فایل جدید از سطل به سرویس خود ایجاد کنید:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
تست
برای تأیید اینکه تریگر با موفقیت ایجاد شده است، تمام تریگرها را فهرست کنید:
gcloud eventarc triggers list
یک فایل را در فضای ذخیرهسازی ابری آپلود کنید:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
اگر گزارشهای سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:

۸. یک تریگر برای گزارشهای حسابرسی ابری ایجاد کنید
اگرچه تریگر Cloud Storage روش بهتری برای گوش دادن به رویدادهای Cloud Storage است، در این مرحله، شما یک تریگر Cloud Audit Log برای انجام همین کار ایجاد میکنید.
راهاندازی
برای دریافت رویدادها از یک سرویس، باید Cloud Audit Logs را فعال کنید. از کنسول Cloud، IAM & Admin و Audit Logs از منوی سمت چپ بالا انتخاب کنید. در لیست سرویسها، Google Cloud Storage تیک بزنید:

در سمت راست، مطمئن شوید که Admin ، Read و Write انتخاب شدهاند و روی Save کلیک کنید:

ایجاد کردن
یک تریگر برای مسیریابی رویدادهای ایجاد فایل جدید از سطل به سرویس خود ایجاد کنید:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
تست
فعالسازی اولیهی تریگرهای Audit Logs کمی زمان میبرد. میتوانید با فهرست کردن تمام تریگرها، از ایجاد شدن تریگر مطمئن شوید:
gcloud eventarc triggers list
باید ببینید که فیلد ACTIVE Yes است:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
همان فایلی را که قبلاً آپلود کردید، در فضای ذخیرهسازی ابری آپلود کنید:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
اگر گزارشهای سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:

۹. رابط کاربری Eventarc را بررسی کنید
در این مرحله، رابط کاربری Eventarc را در کنسول ابری گوگل بررسی خواهید کرد. در رابط کاربری Eventarc، میتوانید مروری بر تمام تریگرها داشته باشید، آنها را ویرایش و حذف کنید و تریگرهای جدیدی از کنسول ابری گوگل ایجاد کنید.
به بخش Eventarc در Google Cloud بروید:

لیست تریگرهایی که قبلاً ایجاد کردهاید را مشاهده خواهید کرد:

اگر روی یک تریگر کلیک کنید، میتوانید جزئیات تریگر را مشاهده کنید، آن را ویرایش یا حذف کنید:

همچنین میتوانید با انتخاب Create trigger و پر کردن جزئیات تریگر، یک تریگر جدید ایجاد کنید:

۱۰. تبریک میگویم!
تبریک میگویم که آزمایشگاه کد را تمام کردی.
آنچه ما پوشش دادهایم
- چشمانداز ایونتارک
- رویدادهای Eventarc را کشف کنید
- یک سینک Cloud Run ایجاد کنید
- یک تریگر برای Pub/Sub ایجاد کنید
- ایجاد یک تریگر برای فضای ذخیرهسازی ابری
- ایجاد یک تریگر برای گزارشهای حسابرسی ابری
- رابط کاربری Eventarc را بررسی کنید