מזהה אזור
REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, המחרוזת REGION_ID.r כלולה בכתובות ה-URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
המדריך הזה יעזור לכם להתחיל לעבוד עם App Engine ולהכיר את התהליך של פיתוח, פריסה וניהול של אפליקציית Go.
אחרי שבונה את האפליקציה, אפשר לקרוא מדריכים נוספים כדי ללמוד איך לשלב אותה עם שירותים אחרים Google Cloud ולהוסיף לה עוד תכונות.
עלויות
אין עלויות שקשורות להפעלת המדריך הזה. הפעלת אפליקציית הדוגמה הזו לבדה לא חורגת מהמכסה החינמית.
הגדרת סביבת הפיתוח
אתם יכולים להשתמש במכונה המקומית שלכם ובכלים שאתם כבר מכירים, או ב-Cloud Shell. ב-Cloud Shell כבר מותקן Google Cloud CLI, הסביבה שלכם כבר מוגדרת ויש בו עוד הרבה תכונות.
מכונה מקומית
מתקינים את Go ומגדירים את ה-CLI של gcloud כמו שמתואר במאמר בנושא הגדרת סביבת הפיתוח.
Cloud Shell
מפעילים את Cloud Shell, שבו מותקנים מראש כל הכלים שתצטרכו:
יצירת Google Cloud פרויקט
כדי להשתמש ב- Google Cloudנדרש פרויקט, והוא הבסיס לשימוש בכל שירותיGoogle Cloud .
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - יוצרים את אפליקציית App Engine ואת המשאבים המשויכים שלה. חובה לבחור מיקום, ואי אפשר לשנות אותו בהמשך.
gcloud app create
- בגלל שינויים בהתנהגות ברירת המחדל של Cloud Build בנוגע לשימוש בחשבונות שירות בפרויקטים חדשים, ושינויים במדיניות הארגון שמוגדרת כמאובטחת כברירת מחדל, יכול להיות שתצטרכו להקצות תפקידים נוספים לחשבון השירות שמשמש לפריסה. מידע נוסף על מתן תפקידים ספציפיים זמין במדריך לפתרון בעיות.
כתיבה של שירות אינטרנט בסיסי ל-App Engine
איך כותבים שירות אינטרנט ומצהירים על הגדרות זמן ריצה
מבנה הקבצים
מבנה הקבצים של השירות יהיה כזה:
-
go-app/: ספרייה לשירות Go.-
app.yaml: הגדרות התצורה של השירות. main.go: קוד האפליקציה.
-
יצירת קובץ app.yaml
לכל פרויקט App Engine יש קובץ הגדרות app.yaml שמציין את הגדרות סביבת זמן הריצה של השירות. אי אפשר לפרוס את השירות בלי הקובץ הזה.
יוצרים תיקייה חדשה בשם
go-appלשירות Go:mkdir go-app
בתיקייה
go-app/, יוצרים קובץ בשםapp.yamlומוסיפים את התוכן הבא:runtime: go126 # or another supported versionזו ההגדרה הפשוטה ביותר לאפליקציית App Engine. היא מציינת ל-App Engine שאתם משתמשים ב-Go. בקובץ
app.yamlאפשר לציין גרסאות אחרות של Go, הגדרות רשת, הגדרות קנה מידה ועוד. מידע נוסף זמין במאמר בנושאapp.yaml.
יצירת קובץ main.go
בדוגמה הזו נעשה שימוש בחבילה net/http כדי ליצור שרת HTTP שמדפיס את המחרוזת Hello, World!.
כדי להגדיר את הקובץ main.go:
בתיקייה
go-app/, יוצרים קובץmain.go.מוסיפים את ההצהרה
package mainכדי שהקוד יטופל כתוכנית הפעלה:package mainכדי לפרוס שירות בהצלחה, צריך להגדיר הצהרת
package mainבתחילת לפחות אחד מקובצי המקור של Go.מייבאים את החבילות הבאות:
מגדירים את ה-HTTP handler:
אובייקט
http.ResponseWriterמרכיב את תגובת שרת ה-HTTP. כשכותבים לאובייקט הזה, שולחים נתונים לדפדפן. האובייקטhttp.Requestהוא מבנה נתונים שמייצג את בקשת ה-HTTP הנכנסת.רושמים את ה-HTTP handler:
הפונקציה
mainהיא נקודת הכניסה של התוכנית שניתנת להרצה, ולכן היא מפעילה את האפליקציה. הוא מתחיל בקריאה לפונקציהhttp.HandleFunc, שמורה לחבילהhttpלטפל בכל הבקשות לשורש האינטרנט ("/") באמצעות הפונקציהindexHandler.אם משתנה הסביבה
PORTלא מוגדר, נעשה שימוש ביציאה8080כברירת מחדל. כשהאפליקציה פועלת ב-App Engine, משתנה הסביבהPORTמוגדר בשבילכם, אבל כשבודקים את האפליקציה באופן מקומי, אפשר להגדיר אתPORTלכל ערך שרוצים.
פריסת שירות האינטרנט ב-App Engine
בספרייה
go-appשבה נמצא הקובץapp.yaml, פורסים את שירות האינטרנט ב-App Engine באמצעות הפקודה הבאה:gcloud app deploy
כדי להפעיל את הדפדפן ולהציג את שירות האינטרנט בכתובת
https://PROJECT_ID.REGION_ID.r.appspot.com, מריצים את הפקודה הבאה:gcloud app browse
כל הכבוד! הרגע יצרתם ופרסתם שירות ב-App Engine.
שירותים וגרסאות
השירות הראשון שתפרסו לאפליקציה יהיה שירות ברירת המחדל.
אפשר לציין את שם השירות בקובץ app.yaml, אבל אם לא מציינים שם, המערכת מתייחסת אליו כאל default. אפשר לפרוס כמה שירותים
בנוסף לשירות ברירת המחדל.
אפשר לעדכן את השירות בכל שלב על ידי הפעלת הפקודה gcloud app deploy. בכל פעם שמבצעים פריסה, נוצרת גרסה חדשה והתנועה מנותבת אוטומטית לגרסה האחרונה.
כדי לאשר את יצירת השירות ואת פריסת הגרסה:
כדי לראות את השירותים של App Engine במסוף Google Cloud :
אמור להופיע שירות אחד בשם
default. שירות ברירת המחדל נגיש לכולם בכתובת ה-URL הבאה:https://PROJECT_ID.REGION_ID.r.appspot.comכדי לראות את הגרסאות:
אמורה להופיע גרסה אחת עם חותמת זמן, שמתאימה לפריסה שלכם.
במאמר איך בקשות מנותבות מוסבר איך לשלוח בקשות לשירותים ולגרסאות ספציפיים.
השלבים הבאים
כל הכבוד! הרגע הגדרתם ופרסתם את אפליקציית האינטרנט ב-App Engine.
כדי ללמוד איך להוסיף תכונות אחרות לאפליקציה, אפשר לעיין בדפים הבאים:
- מידע נוסף על כתיבת יומני אפליקציות ופירוש יומני מערכת זמין במאמר קריאה וכתיבה של יומני אפליקציות.
- למידע נוסף על אופן הפעולה של App Engine, אפשר לעיין במאמר בנושא סביבת זמן הריצה של Go.
- מידע נוסף על טיפול בבקשות ועל ניתוב בקשות