בדף הזה מוסבר איך לפתור בעיות שאתם עלולים להיתקל בהן במהלך השימוש ב-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. אירועים או הודעות שמשויכים למשאב כבר לא מוגנים. פתרון:
|
| חריגה מהמכסה | Quota exceeded for limit |
הגעת למגבלת המכסה של בקשות 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 קיים לא כפוף למדיניות שמוגדרת אחרי שהמשאב נוצר. עם זאת, יכול להיות שעדכון המשאב ייכשל.
|
בעיות שמתרחשות במהלך העברת אירועים
| בעיה ב-CMEK | הודעת השגיאה | תיאור |
|---|---|---|
| מפתח מושבת | $KEY is not enabled, current state is: DISABLED |
מפתח Cloud KMS שסופק הושבת עבור משאב Eventarc. אירועים או הודעות שמשויכים למשאב כבר לא מוגנים. פתרון:
|
| חריגה מהמכסה | Quota exceeded for limit |
הגעת למגבלת המכסה של בקשות 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 שלכם ושיש לו את התפקיד הנדרש:
- נכנסים לדף IAM במסוף Google Cloud .
- בכרטיסייה View by principals (הצגה לפי חשבונות משתמשים), מסמנים את התיבה Include Google-provided role grants (הכללה של תפקידים שניתנו על ידי Google).
ברשימה של חשבונות המשתמשים, מחפשים את חשבון השירות של Eventarc, בפורמט הבא:
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com- מוודאים שלסוכן השירות יש את התפקיד 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()\"}]}]}}}"
מידע נוסף זמין במאמר בנושא טרנספורמציה של אירועים שהתקבלו.