1. מבוא
העדכון האחרון: 2021-05-11
מה זה Cloud SQL?
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים ב-Google Cloud Platform.
מה זה Cloud Functions?
Cloud Functions הוא פתרון מחשוב קל משקל למפתחים, שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים בענן, בלי צורך לנהל שרת או סביבת זמן ריצה.
מה תפַתחו
ב-codelab הזה תכתבו פונקציה של Cloud Functions ב-Python. הפונקציה:
- מתחבר למכונת מסד נתונים של Cloud SQL.
- שולח הצהרת הוספה לטבלה במסד הנתונים.
מה תלמדו
- איך לגשת לממשק המשתמש באינטרנט של Cloud Functions במסוף Google Cloud.
- איך יוצרים פונקציה ב-Cloud Functions
- איך בודקים פונקציה של Cloud Functions.
- איך מתחברים למכונה של מסד נתונים ב-Cloud SQL (MySQL או PostgreSQL) באמצעות Python.
- איך לכתוב למסד נתונים של Cloud SQL באמצעות Python.
2. דרישות
- דפדפן, כמו Chrome או Firefox.
- פרויקט ב-Google Cloud Platform שמכיל את מופע Cloud SQL.
- אם עדיין אין לכם חשבון, תוכלו לפעול לפי השלבים במדריך למתחילים בנושא MySQL או PostgreSQL. מבצעים את כל השלבים חוץ מהניקוי.
- המופע מכיל מסד נתונים של MySQL או PostgreSQL עם טבלה.
- שם החיבור של המופע, שמות מסד הנתונים והטבלה, שם המשתמש במסד הנתונים והסיסמה של המשתמש.
- חשבון שירות עם התפקיד Cloud SQL Client.
3. הכנת הקוד ויצירת הפונקציה
הכנת הקוד
הקוד של Cloud Function לחיבור למסד נתונים של Cloud SQL נמצא כאן. חלק מהערכים של המשתנים תלויים בסוג מסד הנתונים של Cloud SQL (MySQL או PostgreSQL) ובמידע שלכם על מסד הנתונים.
ממשק המשתמש של Cloud Functions במסוף Cloud כולל עורך טקסט. אפשר להעתיק ולהדביק את הקוד ולערוך אותו שם, או לערוך את הקוד באופן מקומי ואז להעתיק ולהדביק אותו בממשק המשתמש.
requirements.txt
# This file tells Python which modules it needs to import
SQLAlchemy==1.3.12
# If your database is MySQL, uncomment the following line:
#PyMySQL==0.9.3
# If your database is PostgreSQL, uncomment the following line:
#pg8000==1.13.2
main.py
# This file contains all the code used in the codelab.
import sqlalchemy
# Depending on which database you are using, you'll set some variables differently.
# In this code we are inserting only one field with one value.
# Feel free to change the insert statement as needed for your own table's requirements.
# Uncomment and set the following variables depending on your specific instance and database:
#connection_name = ""
#table_name = ""
#table_field = ""
#table_field_value = ""
#db_name = ""
#db_user = ""
#db_password = ""
# If your database is MySQL, uncomment the following two lines:
#driver_name = 'mysql+pymysql'
#query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
# If your database is PostgreSQL, uncomment the following two lines:
#driver_name = 'postgres+pg8000'
#query_string = dict({"unix_sock": "/cloudsql/{}/.s.PGSQL.5432".format(connection_name)})
# If the type of your table_field value is a string, surround it with double quotes.
def insert(request):
request_json = request.get_json()
stmt = sqlalchemy.text('insert into {} ({}) values ({})'.format(table_name, table_field, table_field_value))
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name,
query=query_string,
),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800
)
try:
with db.connect() as conn:
conn.execute(stmt)
except Exception as e:
return 'Error: {}'.format(str(e))
return 'ok'
יצירת הפונקציה
- בדפדפן, נכנסים אל ממשק המשתמש של Google Cloud Platform Console.
- בתפריט הניווט, בוחרים באפשרות Cloud Functions.
- לוחצים על CREATE FUNCTION (יצירת פונקציה) בסרגל הלחצנים.
- מזינים שם לפונקציה.
- בוחרים בטריגר HTTP. (חשוב לרשום את כתובת ה-URL שמוצגת מתחת לפריט של הטריגר. הפורמט יהיה: https://REGION-PROJECT_ID.cloudfunctions.net/FUNCTION_NAME)
- בקטע אימות, בוחרים באפשרות הפעלת פונקציות ללא אימות כדי להפוך את הפונקציה לציבורית.
- מרחיבים את הגדרות זמן הריצה, ה-build והחיבורים. בחשבון שירות של זמן הריצה, בוחרים חשבון שירות עם התפקיד לקוח Cloud SQL.
- לוחצים על הלחצן הבא.
- בוחרים באפשרות Python 3.7 בשדה runtime (זמן ריצה).
- בוחרים באפשרות עורך מוטבע בשדה קוד מקור.
- בחלונות של עורך קוד המקור, מוחקים את התוכן הקיים של requirements.txt ושל main.py, ומחליפים אותו בגרסאות הערוכות של הקוד שלמעלה.
- מזינים insert כשם של Entry point.
- לוחצים על Deploy (פריסה) ומחכים עד שהפונקציה נוצרת. הסמל של הגלגל המסתובב מפסיק להסתובב ומופיע סימן וי ירוק בדף הבא כשהפונקציה מוכנה לשימוש.
4. בדיקת הפונקציה
- בדפדפן, נכנסים אל ממשק המשתמש של Google Cloud Platform Console.
- בתפריט הניווט, בוחרים באפשרות Cloud Functions.
- לוחצים על השם של הפונקציה שיצרתם קודם.
- לוחצים על הקישור TESTING (בדיקה) באמצע הדף.
- בוחרים באפשרות בדיקת הפונקציה.
- התוצאה אמורה להיות: ok (אם הבדיקה נכשלת, מוצג דוח קריסות כדי לעזור בניפוי באגים).
- בדפדפן, עוברים לכתובת ה-URL ששמרתם קודם, כשיצרתם את הפונקציה. אם שכחתם לשמור את כתובת ה-URL, תוכלו לקבל אותה מהקישור TRIGGER.
- התוצאה ok אמורה להופיע גם בדפדפן.
5. הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם ב-Codelab הזה:
מחיקת המופע ב-Cloud SQL
- עוברים אל הדף Cloud SQL Instances במסוף Google Cloud.
- בוחרים את המופע שיצרתם כדי לפתוח את דף הפרטים של המופע.
- בסרגל הסמלים בחלק העליון של הדף, לוחצים על מחיקה.
- בחלון Delete instance (מחיקת מכונה), מקלידים את שם המכונה ואז לוחצים על Delete (מחיקה) כדי למחוק את המכונה. אי אפשר להשתמש מחדש בשם של מופע במשך כ-7 ימים אחרי שהמופע נמחק.
מחיקת הפונקציה של Cloud Functions
- נכנסים אל הדף Cloud Functions במסוף Google Cloud.
- לוחצים על סמל האפשרויות הנוספות (3 נקודות) בקטע פעולות של הפונקציה ובוחרים באפשרות מחיקה.
- לוחצים על הלחצן מחיקה כדי לאשר את המחיקה.
6. מזל טוב
כל הכבוד, הצלחתם ליצור פונקציית Cloud Functions שפועלת עם Cloud SQL.
במקרה הזה, יצרתם פונקציית Cloud Functions שמתחברת למכונת מסד נתונים ב-Cloud SQL וכותבת בה.