פתרון בעיות

בדף הזה מוסבר איך לפתור בעיות שאתם עלולים להיתקל בהן במהלך השימוש ב-Eventarc Advanced.

בעיות ב-CMEK

אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) כדי להגן על Eventarc. המפתחות נוצרים ומנוהלים באמצעות Cloud Key Management Service ‏ (Cloud KMS). בטבלה הבאה מתוארות בעיות שונות ב-CMEK ומוסבר איך לפתור אותן כשמשתמשים ב-Cloud KMS עם Eventarc.

בעיות שמתרחשות כשיוצרים או מעדכנים משאבי Eventarc

בעיה ב-CMEK הודעת השגיאה תיאור
מפתח מושבת $KEY is not enabled, current state is: DISABLED

מפתח Cloud KMS שסופק הושבת עבור משאב Eventarc. אירועים או הודעות שמשויכים למשאב כבר לא מוגנים.

פתרון:

  1. הצגת המפתח שמשמש למשאב:
  2. מפעילים מחדש את מפתח Cloud KMS.
חריגה מהמכסה Quota exceeded for limit

הגעת למגבלת המכסה של בקשות Cloud KMS.

פתרון:

  • הגבלת מספר הקריאות ל-Cloud KMS.
  • להגדיל את המכסה.
מידע נוסף זמין במאמר בנושא מעקב אחרי מכסות Cloud KMS ושינוי שלהן.
אזור לא תואם Key region $REGION must match the resource to be protected

האזור של מפתח ה-KMS שצוין שונה מהאזור של המשאב.

פתרון:

שימוש במפתח Cloud KMS מאותו אזור.

אילוץ של מדיניות הארגון project/PROJECT_ID violated org policy constraint

‫Eventarc משולב עם שני אילוצים של מדיניות הארגון כדי לוודא שנעשה שימוש ב-CMEK בכל הארגון. כל משאב Eventarc קיים לא כפוף למדיניות שמוגדרת אחרי שהמשאב נוצר. עם זאת, יכול להיות שעדכון המשאב ייכשל.

  • constraints/gcp.restrictNonCmekServices גורם לכך שכל הבקשות ליצירת משאבים ללא מפתח Cloud KMS שצוין ייכשלו.

    פתרון:

    מציינים מפתח Cloud KMS למשאב Eventarc. מידע נוסף זמין במאמר דרישת CMEK למשאבי Eventarc חדשים.

  • constraints/gcp.restrictCmekCryptoKeyProjects מגביל את מפתחות Cloud KMS שבהם אפשר להשתמש כדי להגן על משאב Eventarc.

    פתרון:

    משתמשים במפתח Cloud KMS נתמך מפרויקט, מתיקייה או מארגון מורשים של Eventarc. מידע נוסף זמין במאמר הגבלת מפתחות Cloud KMS לפרויקט Eventarc.

בעיות שמתרחשות במהלך העברת אירועים

בעיה ב-CMEK הודעת השגיאה תיאור
מפתח מושבת $KEY is not enabled, current state is: DISABLED

מפתח Cloud KMS שסופק הושבת עבור משאב Eventarc. אירועים או הודעות שמשויכים למשאב כבר לא מוגנים.

פתרון:

  1. הצגת המפתח שמשמש למשאב:
  2. מפעילים מחדש את מפתח Cloud KMS.
חריגה מהמכסה Quota exceeded for limit

הגעת למגבלת המכסה של בקשות Cloud KMS.

פתרון:

  • הגבלת מספר הקריאות ל-Cloud KMS.
  • להגדיל את המכסה.
מידע נוסף זמין במאמר בנושא מעקב אחרי מכסות Cloud KMS ושינוי שלהן.
שגיאת הרשאה Permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource $KEY (or it may not exist)

מפתח Cloud KMS שסופק לא קיים או שההרשאה לניהול זהויות והרשאות גישה (IAM) לא מוגדרת כמו שצריך.

פתרון:

כדי לפתור בעיות שאתם עשויים להיתקל בהן כשאתם משתמשים במפתחות שמנוהלים באופן חיצוני דרך Cloud External Key Manager ‏ (Cloud EKM), תוכלו לעיין במאמר הפניה לשגיאות ב-Cloud EKM.

שגיאות HTTP 400 Bad Request

אם נתקלים בשגיאת HTTP כללית בצינור, זה לרוב סימן לבעיה בהמרה או בקשירת הודעה, או לבעיה שקשורה לנקודת הקצה המטורגטת.400 Bad Request חשוב לבצע את הפעולות הבאות:

  • מחפשים שגיאות תחביר או שגיאות לוגיות בביטויי CEL. לדוגמה, ראו בעיות בהמרה במסמך הזה.
  • מוודאים שהודעות האירועים תואמות לסכימה הצפויה. לדוגמה, במאמר הזה מוסבר על פורמט בקשה לא תקין.
  • אם יעד האירוע עצמו מחזיר את השגיאה, צריך לבדוק את נקודת הקצה המטורגטת.

שגיאות HTTP 503 Service Unavailable

אם נתקלתם בשגיאת HTTP 503 Service Unavailable בצינור שמעביר הודעות ליעד של Google באמצעות כתובת DNS – לדוגמה, Cloud Run – ודאו שגישה פרטית ל-Google מופעלת ברשת המשנה שמשמשת לצירוף הרשת. אחרת, לא ניתן לפתור את כתובת ה-DNS.

ההרשאה נדחתה בזמן השימוש בסוכן השירות של Eventarc

אם מופיעה השגיאה הבאה כשמנסים ליצור משאב Eventarc Advanced, צריך להמתין כמה דקות (יכול להיות שבע) ואז לנסות שוב ליצור את המשאב:

Permission denied while using the Eventarc Service Agent. If you recently started to use
Eventarc, it may take a few minutes before all necessary permissions are propagated to the
Service Agent. Otherwise, verify that it has Eventarc Service Agent role.

סוכן שירות פועל בתור הזהות של שירות מסוים Google Cloud בפרויקט מסוים. מידע נוסף זמין במאמר סוכני שירות. אפשר גם לעיין בהרשאות של ניהול זהויות והרשאות גישה (IAM) עבור תפקיד סוכן השירות של Eventarc (roles/eventarc.serviceAgent).

אם עדיין מופיעה השגיאה הקודמת אחרי שניסיתם ליצור מחדש את המשאב, צריך לבצע את השלבים הבאים כדי לוודא שסוכן השירות של Eventarc קיים בפרויקט Google Cloud שלכם ושיש לו את התפקיד הנדרש:

  1. נכנסים לדף IAM במסוף Google Cloud .

    כניסה לדף IAM

  2. בכרטיסייה View by principals (הצגה לפי חשבונות משתמשים), מסמנים את התיבה Include Google-provided role grants (הכללה של תפקידים שניתנו על ידי Google).
  3. ברשימה של חשבונות המשתמשים, מחפשים את חשבון השירות של Eventarc, בפורמט הבא:

    service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

  4. מוודאים שלסוכן השירות יש את התפקיד Eventarc Service Agent. אם לסוכן השירות אין את התפקיד, צריך לתת לו את התפקיד.

בעיות בפרסום משימות ב-Cloud Run

בקטע הזה מוסבר איך לפתור בעיות שאתם עלולים להיתקל בהן כשמפרסמים אירועים למשימת Cloud Run. לצפייה בהדגמה מלאה, ראו את המדריך למתחילים.

שגיאות HTTP 403 Forbidden

אם נתקלתם בשגיאת HTTP 403 Forbidden כשניסיתם להפעיל משימת Cloud Run שדורסת את הגדרות המשימה – למשל, על ידי הגדרת קישור של הודעה – ודאו שהענקתם את תפקיד ה-IAM‏ Cloud Run Developer‏ (roles/run.developer) או Cloud Run Jobs Executor With Overrides‏ (roles/run.jobsExecutorWithOverrides) לחשבון השירות של OAuth שבו משתמש צינור עיבוד הנתונים של Eventarc. למידע נוסף, קראו איך משנים את הגדרות העבודה להרצה ספציפית.

פורמט הבקשה לא תקין

כשמגדירים message binding, צריך להשתמש במפתח http_endpoint_message_binding_template כדי להמיר את האירוע לפורמט שנדרש על ידי Cloud Run Admin API. לדוגמה: {"body": ""}.

אם המפתח חסר או ריק, הודעת האירוע שמופנית לעבודה לא תתאים לסכימה הצפויה של נקודת הקצה של העבודה ב-Cloud Run, ולכן לא תהיה אפשרות להפעיל את ביצוע העבודה באמצעות הודעת האירוע.

בעיות בטרנספורמציה

אם נתוני האירועים לא עוברים טרנספורמציה כמו שציפיתם כשמציינים התאמה של הודעה, צריך לוודא שהתחביר של ביטוי ה-CEL נכון.

ביטוי CEL שגוי

לדוגמה, בביטוי הבא, נעשה שימוש בהחלפות של מחרוזות במירכאות – כמו \"${message.data}\" – כדי להעריך ולהוסיף ערכים של משתנים, במקום להשתמש בפונקציות של הרחבות CEL:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"${message.data}\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"${message.attributes}\"}]}]}}}"

בנוסף, מאפייני האירוע הם שדות ברמה העליונה באובייקט ההודעה, והם לא נכללים בשדה מאפיינים נפרד – כמו message.attributes. צריך לגשת לכל מאפיין של הודעת CloudEvents נכנסת באמצעות הערך message.key, כאשר key הוא שם המאפיין.

ביטוי CEL נכון

כדי לפתור את הבעיות האלה, צריך לצרף את הפונקציה toJsonString() ישירות לאובייקט כדי להעביר את נתוני ההודעה כמחרוזת JSON. כדי לתעד את מאפייני האירוע כמחרוזת JSON בלי לכלול את המטען הייעודי (payload), משתמשים ב-message.removeFields(["data"]).toJsonString(). לדוגמה:

cel_expression: "{\"body\":{\"overrides\":{\"containerOverrides\":[{\"env\":[{\"name\":\"CLOUD_EVENT_PAYLOAD\",\"value\":\"message.data.toJsonString()\"},{\"name\":\"CLOUD_EVENT_ATTRIBUTES\",\"value\":\"message.removeFields(['data']).toJsonString()\"}]}]}}}"

מידע נוסף זמין במאמר בנושא טרנספורמציה של אירועים שהתקבלו.

המאמרים הבאים