למה הפרה מסוימת לא מקפיצה הודעת שגיאה כמו שאמור לקרות?
אם בדקתם את הלוגיקה של התיקוף ומצאתם שהאילוץ לא מקפיץ הודעת שגיאה כמו שאמור לקרות, תוכלו לבדוק את הדברים הבאים:
- האם ספריית המדיניות מוגדרת נכון? ודאו שספריית המדיניות מכילה את הספרייה
policies/constraints, שמכילה את האילוץ שאמור לגרום להפרה. - האם יש תמיכה במשאב של Terraform שמכיל את ההפרה? אפשר לבדוק הפרות באמצעות
gcloud beta terraform vetרק למשאבים שיש תמיכה בגרסה שלהם. נסו להריץ מחדש את הפקודה עם--verbosity=debugוחפשו את ההודעה:unsupported resource: google_resource_name. תוכלו גם לבדוק אם המשאב נמצא ברשימת המשאבים הנתמכים. האם האילוץ מיועד למשאב הנכון של Terraform?
- בדקו את השדה
kindבאילוץ. הוא אמור להיראות כך:GCPAppengineLocationConstraintV1 - חפשו בספרייה
policies/templatesמדיניות שיש לה אותו ערך עבורspec.crd.spec.names.kind - בשדה
regoחפשו משהו שנראה כך:asset.asset_type == "appengine.googleapis.com/Application". זהו סוג הנכס ב-CAI שאליו מיועד האילוץ. - ודאו שסוג הנכס ב-CAI נמצא ברשימת המשאבים הנתמכים.
- בדקו את השדה
למה מופיעה הודעת שגיאה על כך שלא הוגדר פרויקט?
כדי ליצור שם נכס מדויק ב-CAI נעשה שימוש במאגר של ישויות אב למשאבים. אם ל-gcloud beta terraform vet אין אפשרות לקבוע אוטומטית מה ישות האב של הנכס ב-CAI, מופיעה הודעת השגיאה הבאה: project: required field is not set. תוכלו לציין פרויקט ברירת מחדל עם הדגל --project, או להגדיר פרויקט באמצעות gcloud config.
למה מופיעה הודעת השגיאה getting resource ancestry for project PROJECT_ID: googleapi: Error 403: The caller does not have permission, forbidden?
נסו להריץ את הפקודה עם --verbosity=debug וחפשו את ההודעה: Terraform
is using this identity:. בסוף ההודעה אמורה להופיע כתובת האימייל של החשבון שמשמש לבקשות API.
- אם אין כתובת אימייל, ודאו שהאימות פועל כמו שצריך.
- אם יש כתובת אימייל אבל היא לא של חשבון השירות שרציתם לחקות, ודאו שהחיקוי של חשבון השירות מוגדר כמו שצריך.
- אם מופיעה כתובת האימייל הנכונה, ודאו שיש לה את ההרשאות הבאות בפרויקט:
getIamPolicyresourcemanager.projects.get