הרצת פונקציות באמצעות כלי האמולטור של Functions
האמולטור של Functions ב-Google Cloud CLI מאפשר לכם לנהל מופעים מקומיים של פונקציות Cloud Run באמצעות הפקודה gcloud alpha functions local. כך תוכלו לפרוס את הפונקציות ולבדוק אותן במערכת המקומית לפני שתפרסו אותן בסביבתGoogle Cloud .
האמולטור של Functions משתמש ב-buildpacks של Google Cloud כדי לארוז את קוד הפונקציה בקובצי אימג' של קונטיינרים שאפשר להריץ באופן מקומי. אחר כך מריצים את התמונות האלה באופן מקומי באמצעות Docker.
דרישות מוקדמות להתקנה
לפני שממשיכים, צריך לוודא שהרכיבים הבאים מותקנים:
פריסת הפונקציה באופן מקומי
כדי לפרוס את הפונקציה באופן מקומי באמצעות Functions Emulator, משתמשים בפקודה gcloud functions:
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=nodejs22
Python
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=python314
Go
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=go121
Java
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=java17
Ruby
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=ruby34
מחליפים את:
- LOCAL_DEPLOYMENT_NAME: השם שבו אתם פורסים את הפונקציה באופן מקומי.
- ENTRY_POINT: נקודת הכניסה של הפונקציה.
אפשר להגדיר עוד את פקודת הפריסה באמצעות הדגלים האופציונליים הבאים:
| סימון | תיאור |
|---|---|
--port |
היציאה שבה יתבצעו האזנה לבקשות (ברירת מחדל: 8080). |
--builder |
השם של הכלי ליצירת buildpack שבו רוצים להשתמש. |
ערך ברירת המחדל של --builder הוא כלי ה-builder של App Engine עבור השפה של הפונקציה. לדוגמה, ברירת המחדל היא gcr.io/serverless-runtimes/google-22-full/builder/python ל-Python.
בפעם הראשונה שמשתמשים בפקודה gcloud alpha, הפקודה gcloud תציג בקשה להתקנת קבוצת הפקודות gcloud alpha.
הפעלת פונקציה מקומית
כדי להפעיל את הפונקציה המקומית בלי נתונים, משתמשים בפקודה הבאה:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
מחליפים את LOCAL_DEPLOYMENT_NAME בשם שרוצים לתת לפונקציה שפורסתם באופן מקומי.
כדי לכלול נתונים בקריאה לפונקציה המקומית, בוחרים את הכרטיסייה שתואמת לסוג הפונקציה:
פונקציית HTTP
קוראים לפונקציית ה-HTTP המקומית באופן הבא:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--data='{"message": "MESSAGE"}'
מחליפים את:
- LOCAL_DEPLOYMENT_NAME: השם שבו הפונקציה תופעל באופן מקומי.
- ENTRY_POINT: נקודת הכניסה של הפונקציה.
- MESSAGE: מחרוזת טקסט שמועברת כגוף של בקשת ה-HTTP.
פונקציית CloudEvent
כדי להפעיל את פונקציית CloudEvent המקומית, צריך לספק אובייקט JSON CloudEvent שמתאר את אירוע הטריגר:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--cloud-event="CLOUD_EVENT_JSON"
מחליפים את:
- LOCAL_DEPLOYMENT_NAME: השם שבו הפונקציה תופעל באופן מקומי.
- ENTRY_POINT: נקודת הכניסה של הפונקציה.
- CLOUD_EVENT_JSON: מחרוזת עם קידוד JSON במצב תוכן מובנה שמתארת את האירוע שהפעיל את הפונקציה. פרטים נוספים ודוגמאות מופיעים במאמר בנושא CloudEvents – פורמט אירוע JSON.
זוהי דוגמה לשורת פקודה:
gcloud alpha functions local call my-function --cloud-event='{
"specversion" : "1.0",
"type" : "com.github.pull.create",
"source" : "https://github.com/cloudevents/spec/pull",
"subject" : "123",
"id" : "ce",
"time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
}'
מידע נוסף על הגדרת פורמט JSON ל-CloudEvents זמין במאמר בנושא מפרטים של CloudEvent.
מחיקת פריסת הפונקציה המקומית
כדי למחוק את הפריסה של הפונקציה המקומית, מריצים את הפקודה הבאה:
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
מחליפים את LOCAL_DEPLOYMENT_NAME בשם שרוצים להשתמש בו כדי לפרוס את הפונקציה באופן מקומי.
הפקודה הזו מבטלת את הפריסה של הפונקציה, אבל לא מוחקת את קוד הפונקציה.
השלבים הבאים
- איך פורסים פונקציית Cloud Run ב- Google Cloud