מטרות
כתיבה, פריסה והפעלה של פונקציית HTTP Cloud Run עם גישה ל-Spanner.
עלויות
במסמך הזה נעשה שימוש בפונקציות של Spanner ו-Cloud Run, שהן רכיבים של Google Cloudשחלים עליהם חיובים.
מידע על העלות של שימוש ב-Spanner מופיע במאמר בנושא תמחור Spanner.
למידע על העלות של שימוש בפונקציות Cloud Run, כולל הפעלות בחינם, ראו תמחור של פונקציות Cloud Run.
לפני שמתחילים
במסמך הזה אנחנו מניחים שיש לכם מופע Spanner בשם
test-instanceומסד נתונים בשםexample-dbשמשתמש בסכימה של אפליקציית המוזיקה. הוראות ליצירת מופע ומסד נתונים עם סכימת אפליקציית המוזיקה מופיעות במאמר הפעלה מהירה באמצעות המסוף או במדריכים לתחילת העבודה ב-Go, Java, Node.js או Python.מפעילים את פונקציות Cloud Run ואת Cloud Build API.
מתקינים ומפעילים את ה-CLI של gcloud.
אם כבר התקנתם את ה-CLI של gcloud, תוכלו לעדכן אותו באמצעות הפקודה הבאה:
gcloud components updateמכינים את סביבת הפיתוח:
Node.js
Python
Go
Java
הכנת הבקשה
משכפלים את מאגר האפליקציה לדוגמה ומעבירים אותו למכונה המקומית:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
עוברים לספרייה שמכילה את הקוד לדוגמה של פונקציות Cloud Run לגישה ל-Spanner:
Node.js
cd nodejs-docs-samples/functions/spanner/
Python
cd python-docs-samples/functions/spanner/
Go
cd golang-samples/functions/spanner/
Java
cd java-docs-samples/functions/spanner/
כדאי לעיין בקוד לדוגמה:
Node.js
Python
Go
Java
הפונקציה שולחת שאילתת SQL כדי לאחזר את כל הנתונים מסוג
Albumsממסד הנתונים. הפונקציה מופעלת כששולחים בקשת HTTP לנקודת הקצה של הפונקציה.
פריסת הפונקציה
כדי לפרוס את הפונקציה עם טריגר HTTP, מריצים את הפקודה הבאה בספרייה spanner:
Node.js
gcloud functions deploy get \ --runtime nodejs22 --trigger-http
משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Node.js נתמכת להרצת הפונקציה.
Python
gcloud functions deploy spanner_read_data \ --runtime python312 --trigger-http
משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Python נתמכת להרצת הפונקציה.
Go
gcloud functions deploy HelloSpanner \ --runtime go121 --trigger-http
כדי לציין את מזהה זמן הריצה של גרסת Go נתמכת להרצת הפונקציה, משתמשים בדגל --runtime.
Java
gcloud functions deploy java-spanner-function \ --entry-point functions.HelloSpanner \ --runtime java17 \ --memory 512MB --trigger-http
משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Java נתמכת להרצת הפונקציה.
פריסת הפונקציה עשויה להימשך עד שתי דקות.
שימו לב לערך url שמוחזר כשהפריסה של הפונקציה מסתיימת. תשתמשו בו כשמפעילים את הפונקציה.
אפשר לראות את פונקציות Cloud Run שפרסתם בדף Cloud Run functions במסוףGoogle Cloud . בדף הזה אפשר גם ליצור ולערוך פונקציות, ולקבל פרטים וניתוח של הפונקציות.
הפעלת הפונקציה
שליחת בקשת HTTP לפונקציה:
Node.js
curl "https://REGION-PROJECT_ID.cloudfunctions.net/get"
Python
curl "https://REGION-PROJECT_ID.cloudfunctions.net/spanner_read_data"
Go
curl "https://REGION-PROJECT_ID.cloudfunctions.net/HelloSpanner"
Java
curl "https://REGION-PROJECT_ID.cloudfunctions.net/java-spanner-function"
כאשר REGION ו-PROJECT_ID תואמים לערכים שמוצגים בטרמינל כשפריסת הפונקציה מסתיימת. אמורות להופיע תוצאות שמציגות את שאילתת SQL, בהנחה שפעלתם לפי המדריך בנושא תחילת העבודה ואכלסתם את מסד הנתונים:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
אפשר גם להיכנס לכתובת ה-URL של הפונקציה בדפדפן כדי לראות את התוצאה של שאילתת ה-SQL.
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון על המשאבים של פונקציות Spanner ו-Cloud Run שבהם נעשה שימוש במסמך הזה, צריך לבצע את הפעולות הבאות: Google Cloud
מוחקים את המכונה:
gcloud spanner instances delete test-instanceמוחקים את הפונקציה שפרסתם:
Node.js
gcloud functions delete get
Python
gcloud functions delete spanner_read_data
Go
gcloud functions delete HelloSpanner
Java
gcloud functions delete java-spanner-function