יצירה ופריסה של פונקציית HTTP ב-Cloud Run באמצעות Go (דור ראשון)
במדריך הזה נסביר איך לכתוב פונקציה של Cloud Run באמצעות זמן הריצה של Go. יש שני סוגים של פונקציות Cloud Run:
- פונקציית HTTP, שמפעילים אותה מבקשות HTTP רגילות.
- פונקציה מבוססת-אירועים, שמשמשת לטיפול באירועים מהתשתית של Cloud, כמו הודעות בנושא Pub/Sub או שינויים בקטגוריה של Cloud Storage.
בדוגמה מוצג איך ליצור פונקציית HTTP פשוטה.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Cloud Functions API ואת Cloud Build API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudfunctions
cloudbuild.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את Cloud Functions API ואת Cloud Build API:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudfunctions
cloudbuild.googleapis.com - מכינים את סביבת הפיתוח.
יצירת פונקציה
יוצרים ספרייה במערכת המקומית לקוד הפונקציה:
Linux או Mac OS X
mkdir ~/helloworld cd ~/helloworldWindows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworldיוצרים קובץ בשם
hello_http.goבספרייהhelloworldעם התוכן הבא:הפונקציה לדוגמה הזו מקבלת שם שסופק בבקשת ה-HTTP ומחזירה ברכה, או "Hello, World!" אם לא סופק שם.
ציון יחסי תלות
הפונקציה לדוגמה הזו משתמשת רק בחבילות של ספריית Go standard, כך שלא צריך להצהיר על תלות כלשהי מעבר לייבוא החבילות.
אם יש פונקציות שדורשות יחסי תלות מחוץ לספרייה הרגילה, צריך לספק את יחסי התלות באמצעות קובץ go.mod או ספרייה vendor. פרטים נוספים זמינים במאמר Specifying dependencies in Go.
פריסת הפונקציה
כדי לפרוס את הפונקציה עם טריגר HTTP, מריצים את הפקודה הבאה בספרייה helloworld, ומציינים את הערך go113 או go111 לדגל --runtime, בהתאם לגרסה שבה אתם משתמשים:
gcloud functions deploy HelloHTTP --no-gen2 --runtime go121 --trigger-http --allow-unauthenticated
הדגל --allow-unauthenticated מאפשר להגיע לפונקציה ללא אימות.
כדי לדרוש אימות, לא מציינים את הדגל.
בדיקת הפונקציה
אחרי שהפונקציה מסיימת את הפריסה, כדאי לשים לב למאפיין
httpsTrigger.urlאו למצוא אותו באמצעות הפקודה הבאה:gcloud functions describe HelloHTTPהוא אמור להיראות כך:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
נכנסים לכתובת ה-URL הזו בדפדפן, או משתמשים ב-cURL על ידי הרצת הפקודה:
curl https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
אמורה להופיע ההודעה Hello, World!. כדי לנסות להעביר שם בבקשת ה-HTTP, מריצים את הפקודה הבאה:
curl -X POST https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP -H "Content-Type:application/json" -d '{"name":"NAME"}'ההודעה 'שלום,
NAME!' תוצג.
צפייה ביומנים
אפשר לראות את היומנים של פונקציות Cloud Run באמצעות Google Cloud CLI ובממשק המשתמש של Cloud Logging.
שימוש בכלי שורת הפקודה
כדי להציג את היומנים של הפונקציה באמצעות ה-CLI של gcloud, משתמשים בפקודה logs read ואחריה שם הפונקציה:
gcloud functions logs read HelloHTTP
הפלט אמור להיראות כך:
LEVEL NAME EXECUTION_ID TIME_UTC LOG D HelloHTTP buv9ej2k1a7r 2019-09-20 13:23:18.910 Function execution started D HelloHTTP buv9ej2k1a7r 2019-09-20 13:23:18.913 Function execution took 4 ms, finished with status code: 200
שימוש בלוח הבקרה של הרישום ביומן
אפשר גם לצפות ביומנים של פונקציות Cloud Run ממסוףGoogle Cloud .