זמן הריצה של 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. אפליקציות שזקוקות למידע הזה צריכות להגדיר את תוכנת ה-framework שלהן כך שתיתן אמון בשרת ה-proxy.
מערכת קבצים
סביבת זמן הריצה כוללת ספרייה /tmp עם הרשאת כתיבה, ולכל שאר הספריות יש הרשאת קריאה בלבד. כתיבה ל-/tmp תופסת זיכרון מערכת. מידע נוסף זמין במאמרי העזרה בנושא TempDir וTempFile.
שרת מטא-נתונים
כל מופע של האפליקציה יכול להשתמש בשרת המטא-נתונים של App Engine כדי לשלוח שאילתות לגבי המופע והפרויקט.
אפשר לגשת לשרת המטא-נתונים דרך נקודות הקצה הבאות:
http://metadatahttp://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.