קבלת אירועים ישירות מ-Cloud Storage (ה-CLI של gcloud)
במדריך למתחילים הזה מוסבר איך לקבל אירועים ישירים מ-Cloud Storage (בלי להשתמש ביומני ביקורת של Cloud) בשירות לא מאומת של Cloud Run באמצעות Eventarc.
אתם יכולים להגדיר הפעלה של התראות בתגובה לאירועים שונים בקטגוריה של Cloud Storage – יצירה, מחיקה, העברה לארכיון ועדכונים של מטא-נתונים של אובייקטים. מידע נוסף זמין במאמר יצירת טריגר להפניית אירועים ב-Cloud Storage אל Cloud Run.
במדריך למתחילים הזה:
יוצרים קטגוריה של Cloud Storage שתשמש כמקור האירועים.
פריסת שירות לקבלת אירועים ב-Cloud Run.
יוצרים טריגר Eventarc.
יוצרים אירוע על ידי העלאת קובץ לקטגוריה של Cloud Storage, וצופים בו ביומנים של Cloud Run.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Cloud Run API, Cloud Storage API, Eventarc API ו-Pub/Sub API.
gcloud services enable \ eventarc.googleapis.com \ pubsub.googleapis.com \ run.googleapis.com \ storage.googleapis.com
- עדכון רכיבים של
gcloud:gcloud components update
- נכנסים באמצעות החשבון:
gcloud auth login
- מגדירים את משתני ההגדרה שמשמשים במדריך הזה:
gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
-
אם אתם יוצרי הפרויקט, מוקצה לכם תפקיד הבעלים הבסיסי (
roles/owner). כברירת מחדל, תפקיד ניהול הזהויות והרשאות הגישה (IAM) הזה כולל את ההרשאות שנדרשות לגישה מלאה לרוב המשאבים Google Cloud, ואפשר לדלג על השלב הזה.אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון משתמש יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות (לאפליקציות ולעומסי עבודה ממוחשבים). מידע נוסף זמין בדף תפקידים והרשאות של יעד האירוע.
ההרשאות הנדרשות
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, צריך לבקש מהאדמין להקצות לכם בפרויקט את תפקידי ה-IAM הבאים:
- אדמין ב-Cloud Run (
roles/run.admin) - אדמין ב-Eventarc (
roles/eventarc.admin) - בעל הרשאת גישה לתצוגת יומנים (
roles/logging.viewAccessor) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - אדמין Service Usage (
roles/serviceusage.serviceUsageAdmin) - אדמין באחסון (
roles/storage.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- אדמין ב-Cloud Run (
חשוב לשים לב לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, כי תצטרכו לצרף אותו לטריגר של Eventarc כדי לייצג את הזהות של הטריגר למטרות בדיקה. חשבון השירות הזה נוצר באופן אוטומטי אחרי שמפעילים או משתמשים בשירות Google Cloud שמשתמש ב-Compute Engine, והוא בפורמט האימייל הבא:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
מחליפים את
PROJECT_NUMBERבמספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
בסביבות ייצור, מומלץ מאוד ליצור חשבון שירות חדש ולהקצות לו תפקיד IAM אחד או יותר שמכילים את ההרשאות המינימליות הנדרשות, ולפעול לפי העיקרון של הרשאות מינימליות.
- מקצים את התפקיד 'מקבל אירועים ב-Eventarc' (
roles/eventarc.eventReceiver) בפרויקט לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, כדי שהטריגר של Eventarc יוכל לקבל אירועים מספקי אירועים.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
- לפני שיוצרים טריגר לאירועים ישירים מ-Cloud Storage, צריך להעניק לסוכן השירות של Cloud Storage את התפקיד Pub/Sub Publisher (
roles/pubsub.publisher):SERVICE_ACCOUNT="$(gcloud storage service-agent --project=PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'
- אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator). אחרת, התפקיד הזה מוענק כברירת מחדל:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
יצירת קטגוריה של Cloud Storage
יוצרים קטגוריה של Cloud Storage לשימוש כמקור האירועים: gcloud storage buckets create gs://PROJECT_ID-bucket/ --location=us-central1
אחרי שיוצרים את מקור האירועים, אפשר לפרוס את שירות מקבל האירועים ב-Cloud Run.
פריסת שירות לקבלת אירועים ב-Cloud Run
פריסת שירות Cloud Run שיקבל אירועים ויתעד אותם ביומן באמצעות תמונה מוכנה מראש, us-docker.pkg.dev/cloudrun/container/hello:
gcloud run deploy helloworld-events \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--allow-unauthenticated
אם הפריסה מצליחה, כתובת ה-URL של השירות מוצגת בשורת הפקודה.
אחרי שפרסתם שירות לקבלת אירועים בשם helloworld-events ב-Cloud Run, אתם יכולים להגדיר את הטריגר.
יצירת טריגר Eventarc
הטריגר של Eventarc שולח אירועים מקטגוריית Cloud Storage לשירות helloworld-eventsCloud Run.
יוצרים טריגר שמסנן אירועים ב-Cloud Storage ומשתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
gcloud eventarc triggers create storage-events-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=PROJECT_ID-bucket" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.comהפעולה הזו יוצרת טריגר בשם
storage-events-trigger.שימו לב: כשיוצרים טריגר Eventarc בפעם הראשונה בפרויקט Google Cloud , יכול להיות שיהיה עיכוב בהקצאת סוכן השירות של Eventarc. בדרך כלל אפשר לפתור את הבעיה הזו על ידי ניסיון ליצור את הטריגר מחדש. מידע נוסף זמין במאמר בנושא שגיאות שקשורות לסירוב הרשאה.
כדי לוודא ש-
storage-events-triggerנוצר בהצלחה, מריצים את הפקודה:gcloud eventarc triggers list --location=us-central1הפלט אמור להיראות כך:
NAME TYPE DESTINATION_RUN_SERVICE DESTINATION_RUN_PATH ACTIVE storage-events-trigger google.cloud.storage.object.v1.finalized helloworld-events Yes
יצירה והצגה של אירוע
כדי ליצור אירוע, מעלים קובץ טקסט ל-Cloud Storage:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://PROJECT_ID-bucket/random.txt
ההעלאה יוצרת אירוע, ושירות Cloud Run רושם ביומן את ההודעה של האירוע.
כדי להציג את רשומת היומן, מסננים את רשומות היומן ומחזירים את הפלט בפורמט JSON:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.storage.object.v1.finalized."'
מחפשים רשומה ביומן שדומה לזו:
jsonPayload: event: ... eventType: google.cloud.storage.object.v1.finalized message: | Received event of type google.cloud.storage.object.v1.finalized. Event data: { "kind": "storage#object", "id": "PROJECT_ID-bucket/random.txt/1713970683868432", "selfLink": "https://www.googleapis.com/storage/v1/b/PROJECT_ID-bucket/o/random.txt", "name": "random.txt", "bucket": "PROJECT_ID-bucket", ... }
כל הכבוד! הצלחתם לפרוס שירות לקבלת אירועים ב-Cloud Run, ליצור טריגר Eventarc, ליצור אירוע מ-Cloud Storage ולצפות בו ביומנים של Cloud Run.
הסרת המשאבים
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים.
אתם יכולים:
אפשר גם למחוק את הפרויקט Google Cloud כדי למנוע חיובים. כשמוחקים פרויקט ב- Google Cloud , החיוב על כל המשאבים שנעשה בהם שימוש באותו פרויקט מופסק.
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
אם אתם מתכננים להיעזר במספר מדריכי לימוד או מדריכים למתחילים, מומלץ להשתמש שוב באותו פרויקט כדי לא לחרוג ממכסות הפרויקטים.