זמן הריצה של Go

הפונקציה של Cloud Run פועלת בסביבה שכוללת גרסה של מערכת הפעלה עם חבילות של תוספים, תמיכה בשפה וספרייה של Go Functions Framework שתומכת בפונקציה ומפעילה אותה. הסביבה הזו מזוהה לפי גרסת השפה, והיא נקראת מזהה זמן הריצה.

הכנת הפונקציה

אפשר להכין פונקציה ישירות ממסוף Google Cloud או לכתוב אותה במחשב המקומי ולהעלות אותה. כדי להכין את המחשב המקומי לפיתוח ב-Go, אפשר לעיין במאמר הגדרת סביבת פיתוח ב-Go.

זמני ריצה וקובצי אימג' בסיסיים של Go שנתמכים

זמן ריצה המזהה של סביבת זמן הריצה מקבצים תמונת בסיס בזמן ריצה הוצאה משימוש הוצאה משימוש
‫Go 1.26 go126
  • ‫google-24 (ברירת מחדל)
  • google-24-full
  • google-24/go126
  • google-24-full/go126
  • ‫Go 1.25 go125
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go125
  • google-22-full/go125
  • ‫Go 1.24 go124
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go124
  • google-22-full/go124
  • 2026-09-02 2027-03-02
    ‫Go 1.23
    go123
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go123
  • google-22-full/go123
  • 2026-02-21 2026-08-21
    ‫Go 1.22 go122
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go122
  • google-22-full/go122
  • 2026-01-28 2026-07-28
    ‫Go 1.21 go121
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go121
  • google-22-full/go121
  • 2025-09-03 2026-03-03
    ‫Go 1.20 go120
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go120
  • google-22-full/go120
  • 2024-05-01 2025-05-01
    ‫Go 1.19 go119
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go119
  • google-22-full/go119
  • 2024-04-30 2025-01-30
    ‫Go 1.18 go118
  • google-22 (ברירת מחדל)
  • google-22-full
  • google-22/go118
  • google-22-full/go120
  • 2024-01-30 2025-01-30
    ‫Go 1.16 go116 google-18-full google-18-full/go116 2024-01-30 2025-01-30
    ‫Go 1.13 go113 google-18-full google-18-full/go113 2024-01-30 2025-01-30
    ‫Go 1.11 go111 הוצא משימוש הוצא משימוש 2020-08-05 פברואר 2021

    בחירת זמן הריצה

    במהלך הפריסה, אפשר לבחור באחת מסביבות הריצה הנתמכות של Go עבור הפונקציה.

    אפשר לבחור גרסת זמן ריצה באמצעות Google Cloud המסוף או ה-CLI של gcloud. לוחצים על הכרטיסייה עם ההוראות לשימוש בכלי הרצוי:

    gcloud

    מציינים את תמונת הבסיס של Go לפונקציה באמצעות הדגל --base-image, כשפורסים את הפונקציה. לדוגמה:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image go126
    

    מחליפים את:

    • FUNCTION בשם הפונקציה שאתם פורסים. אפשר להשמיט את הפרמטר הזה לגמרי, אבל אם תשמיטו אותו, תתבקשו לציין את השם.

    • FUNCTION_ENTRYPOINT עם נקודת הכניסה לפונקציה בקוד המקור. זה הקוד ש-Cloud Run מריץ כשהפונקציה פועלת. הערך של הדגל הזה צריך להיות שם של פונקציה או שם מלא של מחלקה שקיימים בקוד המקור.

    הוראות מפורטות לפריסת פונקציה באמצעות ה-CLI של gcloud מופיעות במאמר פריסת פונקציות ב-Cloud Run.

    המסוף

    אפשר לבחור גרסת זמן ריצה כשיוצרים או מעדכנים פונקציית Cloud Run במסוף Google Cloud . הוראות מפורטות לפריסת פונקציה זמינות במאמר פריסת פונקציות ב-Cloud Run.

    כדי לבחור סביבת ריצה במסוף Google Cloud כשיוצרים פונקציה, פועלים לפי השלבים הבאים:

    1. במסוף Google Cloud , נכנסים לדף Cloud Run:

      כניסה ל-Cloud Run

    2. לוחצים על כתיבת פונקציה.

    3. ברשימה Runtime, בוחרים גרסת Go runtime.

    4. לוחצים על Create ומחכים ש-Cloud Run ייצור את השירות באמצעות גרסת פלייסהולדר.

    5. המסוף יפנה אתכם לכרטיסייה מקור, שבה תוכלו לראות את קוד המקור של הפונקציה. לוחצים על שמירה ופריסה מחדש.

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

    מבנה קוד המקור

    כדי שפונקציות Cloud Run יוכלו למצוא את ההגדרה של הפונקציה, קוד המקור צריך להיות במבנה מסוים. מידע נוסף זמין במאמר בנושא כתיבה של פונקציות Cloud Run.

    ציון יחסי תלות

    פונקציות Cloud Run ב-Go צריכות לספק את כל התלויות שלהן באמצעות מודולים של Go וקובץ go.mod, או באמצעות ספרייה vendor. מידע נוסף זמין במאמר Specify dependencies in Go.

    משתני סביבה

    זמן הריצה של Go מגדיר באופן אוטומטי משתני סביבה מסוימים שהפונקציה יכולה להשתמש בהם לפי הצורך. מידע נוסף זמין במאמר הגדרת משתני סביבה.

    סוג Context

    חבילת context של Go מגדירה את Context הסוג, שכולל מועדים, אותות ביטול וערכים אחרים בהיקף הבקשה בגבולות ה-API ובין התהליכים.

    בדוגמה הבאה מוצגת גישה להקשר על ידי לקוח Pub/Sub:

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"context"
    	"fmt"
    	"log"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    	"github.com/cloudevents/sdk-go/v2/event"
    )
    
    func init() {
    	functions.CloudEvent("HelloPubSub", helloPubSub)
    }
    
    // MessagePublishedData contains the full Pub/Sub message
    // See the documentation for more details:
    // https://cloud.google.com/eventarc/docs/cloudevents#pubsub
    type MessagePublishedData struct {
    	Message PubSubMessage
    }
    
    // PubSubMessage is the payload of a Pub/Sub event.
    // See the documentation for more details:
    // https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
    type PubSubMessage struct {
    	Data []byte `json:"data"`
    }
    
    // helloPubSub consumes a CloudEvent message and extracts the Pub/Sub message.
    func helloPubSub(ctx context.Context, e event.Event) error {
    	var msg MessagePublishedData
    	if err := e.DataAs(&msg); err != nil {
    		return fmt.Errorf("event.DataAs: %w", err)
    	}
    
    	name := string(msg.Message.Data) // Automatically decoded from base64.
    	if name == "" {
    		name = "World"
    	}
    	log.Printf("Hello, %s!", name)
    	return nil
    }