הרצת פונקציות באמצעות כלי האמולטור של 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 בשם שרוצים להשתמש בו כדי לפרוס את הפונקציה באופן מקומי.

הפקודה הזו מבטלת את הפריסה של הפונקציה, אבל לא מוחקת את קוד הפונקציה.

השלבים הבאים