בדף הזה מוסבר איך לפתור בעיות שאתם עשויים להיתקל בהן כשאתם פורסים את ההגדרה של Cloud Endpoints. הודעות השגיאה שמוצגות לכם מכילות מידע שספציפי לפרויקט שלכם. לדוגמה, יכול להיות שתראו הודעת שגיאה שכוללת את מזהה הפרויקט. בדף הזה יוצגו ערכי placeholder כמו YOUR_PROJECT_ID.
אחרי כל שלב, מריצים שוב את הפקודה gcloud endpoints services deploy כדי לבדוק אם השגיאה נפתרה.
אי אפשר להמיר להגדרת שירות
ERROR: unknown location: http: In path template '[PATH]':
unexpected end of input '/'.'
השגיאה הזו מוצגת אם נתיב אחד או יותר במסמך OpenAPI כולל תו של קו נטוי בסוף (/). כדי לפתור את הבעיה, מסירים את הקו הנטוי בסוף כל הנתיבים. לדוגמה, קטע הקוד הבא במסמך OpenAPI יוביל לשגיאה הזו:
paths:
"/echo/":
post:
description: "Echo back a given message."
כדי לפתור את הבעיה, מסירים את קו הנטייה האחורי מ-/echo/:
paths:
"/echo":
post:
description: "Echo back a given message."
אין הרשאה לקבל את הגדרות הפרויקט
ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Not allowed to get project settings for project YOUR_PROJECT_ID
- מבצעים שוב אימות באמצעות ה-CLI של gcloud כדי לוודא שהאימות בוצע באמצעות חשבון שיש לו הרשאה לגשת לפרויקט שמוצג בהודעת השגיאה:
gcloud auth login
תיפתח כרטיסייה חדשה בדפדפן ותתבקשו לבחור חשבון.
- מוודאים שמזהה הפרויקט שמוצג בהודעת השגיאה תואם לפרויקט Google Cloud שרוצים לפרוס בו את ההגדרה של Endpoints:
gcloud projects list
- מוודאים שמזהה הפרויקט הנכון מוגדר ב-CLI של gcloud בתור הפרויקט הנוכחי:
gcloud config set project YOUR_PROJECT_ID
למתקשר אין הרשאה
ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Caller does not have permission 'servicemanagement.services.create' on
project YOUR_PROJECT_ID
כשפורסים לראשונה את הגדרת ה-Endpoints, Service Management יוצר שירות מנוהל עבור ה-API. כדי ליצור שירות מנוהל, צריך לפחות תפקיד עורך ברמת הפרויקט. אחרי ש-Service Management יוצר את השירות המנוהל, ההרשאות המינימליות שנדרשות לפריסה מחדש של הגדרת Endpoints הן ההרשאות שמוגדרות בתפקיד עריכת הגדרות שירות (roles/servicemanagement.configEditor) בשירות. מידע נוסף מופיע במאמר בנושא הענקת גישה ל-API.
אי אפשר לאמת את הבעלות על שם הדומיין
ERROR: (gcloud.endpoints.services.deploy) PERMISSION_DENIED:
Ownership for domain name YOUR_DOMAIN_NAME on project
YOUR_PROJECT_ID cannot be verified
- אם הגדרתם דומיין בהתאמה אישית (למשל
example.com) בשדהhostשל מסמך OpenAPI, אתם צריכים לאמת את שם הדומיין לפני שתוכלו לפרוס את מסמך OpenAPI. - אם אתם משתמשים בדומיין
cloud.goog, ודאו שהערך בשדהhostהוא בפורמט הבא ושמזהה הפרויקט נכון:API_NAME.endpoints.YOUR_PROJECT_ID.cloud.goog
- אם אתם משתמשים בדומיין
appspot.com(נתמך רק ב-App Engine), ודאו שהשדהhostהוא בפורמט הבא, ומזהה הפרויקט נכון:YOUR_PROJECT_ID.appspot.com
פתרון בעיות אחרות
אם קיבלתם שגיאה שלא מופיעה כאן, או אם המידע לא עזר לפתור את הבעיה, מריצים שוב את הפקודה gcloud עם הדגל כדי להציג מידע על ניפוי באגים:
gcloud --verbosity=debug endpoints services deploy openapi.yaml