סביבת זמן ריצה של Go

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

זמן הריצה של Go ל-App Engine בסביבה הרגילה מוצהר בקובץ app.yaml:

runtime: goVERSION

VERSION הוא מספר הגרסה של Go MAJOR ו-MINOR. לדוגמה, כדי להשתמש בגרסה העדכנית ביותר של Go, ‏ Go 1.26 (גרסת טרום-השקה), מציינים 126.

למידע על גרסאות Go נתמכות אחרות וגרסת Ubuntu התואמת לגרסת Go שלכם, אפשר לעיין בלוח הזמנים של התמיכה בזמן ריצה.

גרסת Go

הגרסה האחרונה של Go שנתמכת היא 1.26 (גרסת טרום-השקה). סביבת זמן הריצה של Go משתמשת בגרסה היציבה האחרונה של הגרסה שצוינה בקובץ app.yaml. ‫App Engine מתעדכן אוטומטית לגרסאות תיקון חדשות, אבל לא מתעדכן אוטומטית לגרסה הראשית.

לדוגמה, יכול להיות שהאפליקציה שלכם תופעל בגרסה המשנית Go 1.13.1 ותעודכן אוטומטית לגרסה 1.13.2 בהפעלה מאוחרת יותר, אבל היא לא תעודכן אוטומטית לגרסה הראשית Go 1.14.

תלויות

מידע נוסף על הגדרה וניהול של יחסי תלות זמין במאמר Specifying dependencies.

משתני סביבה

משתני הסביבה הבאים מוגדרים על ידי זמן הריצה:

משתנה הסביבה תיאור
GAE_APPLICATION המזהה של אפליקציית App Engine. המזהה הזה מתחיל בקידומת region code~, למשל e~ לאפליקציות שמוצבות באירופה.
GAE_DEPLOYMENT_ID המזהה של הפריסה הנוכחית.
GAE_ENV סביבת App Engine. ההגדרה היא standard.
GAE_INSTANCE המזהה של המופע שבו השירות שלכם פועל כרגע.
GAE_MEMORY_MB נפח הזיכרון שזמין לתהליך האפליקציה, ב-MB.
GAE_RUNTIME סביבת זמן הריצה שצוינה בקובץ app.yaml.
GAE_SERVICE שם השירות שצוין בקובץ app.yaml. אם לא מצוין שם שירות, ברירת המחדל היא default.
GAE_VERSION תווית הגרסה הנוכחית של השירות.
GOOGLE_CLOUD_PROJECT מזהה הפרויקט ב- Google Cloud שמשויך לאפליקציה.
PORT היציאה שמקבלת בקשות HTTP.
NODE_ENV (זמין רק בסביבת זמן ריצה של Node.js) מגדירים את הערך production כשהשירות נפרס.

אפשר להגדיר משתני סביבה נוספים בקובץ app.yaml, אבל אי אפשר לשנות את הערכים שלמעלה, למעט NODE_ENV.

פרוטוקול HTTPS ושרתי proxy להעברה

‫App Engine מפסיק חיבורי HTTPS במאזן העומסים ומעביר בקשות לאפליקציה. באפליקציות מסוימות צריך לקבוע את כתובת ה-IP והפרוטוקול של הבקשה המקורית. כתובת ה-IP של המשתמש זמינה בכותרת הרגילה X-Forwarded-For. באפליקציות שנדרש בהן המידע הזה, צריך להגדיר את מסגרת האינטרנט כך שתיתן אמון ב-proxy.

מערכת קבצים

סביבת זמן הריצה כוללת ספרייה /tmp עם הרשאת כתיבה, ולכל שאר הספריות יש הרשאת קריאה בלבד. כתיבה ל-/tmp תופסת זיכרון מערכת. מידע נוסף זמין במאמרי העזרה בנושא TempDir וTempFile.

שרת מטא-נתונים

כל מופע של האפליקציה יכול להשתמש בשרת המטא-נתונים של App Engine כדי לשלוח שאילתות לגבי המופע והפרויקט.

אפשר לגשת לשרת המטא-נתונים דרך נקודות הקצה הבאות:

  • http://metadata
  • http://metadata.google.internal

בקשות שנשלחות לשרת המטא-נתונים חייבות לכלול את כותרת הבקשה Metadata-Flavor: Google. הכותרת הזו מציינת שהבקשה נשלחה בכוונה מפורשת לאחזר ערכי מטא-נתונים.

בטבלה הבאה מפורטות נקודות הקצה שאליהן אפשר לשלוח בקשות HTTP למטא-נתונים ספציפיים:

נקודת קצה של מטא-נתונים תיאור
/computeMetadata/v1/project/numeric-project-id מספר הפרויקט שהוקצה לפרויקט שלכם.
/computeMetadata/v1/project/project-id מזהה הפרויקט שהוקצה לפרויקט.
/computeMetadata/v1/instance/region האזור שבו המכונה פועלת.
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל ומוקצה לפרויקט.
/computeMetadata/v1/instance/service-accounts/default/ מציגה את כל חשבונות השירות שמוגדרים כברירת מחדל בפרויקט.
/computeMetadata/v1/instance/service-accounts/default/scopes רשימה של כל ההיקפים הנתמכים בחשבונות שירות שמוגדרים כברירת מחדל.
/computeMetadata/v1/instance/service-accounts/default/token מחזירה את אסימון האימות שאפשר להשתמש בו כדי לאמת את האפליקציה שלכם ב-Google Cloud APIs אחרים.

לדוגמה, כדי לאחזר את מזהה הפרויקט, שולחים בקשה אל http://metadata.google.internal/computeMetadata/v1/project/project-id.