פריסת פונקציית Cloud Run (דור ראשון)

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

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

היסודות של פריסה

למשתמשים שפורסים פונקציות Cloud Run צריכה להיות הרשאת IAM מסוג Cloud Run functions Developer או הרשאה שכוללת את אותן הרשאות. אפשר לעיין גם במאמר הגדרות נוספות לפריסה.

כדי לפרוס פונקציה באמצעות ה-CLI של gcloud:

  1. משתמשים בפקודה gcloud functions deploy כדי לפרוס פונקציה:

    gcloud functions deploy YOUR_FUNCTION_NAME \
      [--gen2] \
      --region=YOUR_REGION \
      --runtime=YOUR_RUNTIME \
      --source=YOUR_SOURCE_LOCATION \
      --entry-point=YOUR_CODE_ENTRYPOINT \
      TRIGGER_FLAGS
    

    הארגומנט הראשון, YOUR_FUNCTION_NAME, הוא שם לפונקציה שפרסתם. שם הפונקציה חייב להתחיל באות ואחריה עד 62 אותיות, מספרים, מקפים או קווים תחתונים, ולהסתיים באות או במספר.

    • הדגל --gen2 מציין שרוצים לפרוס לפונקציות Cloud Run. החל מספטמבר 2024, זו תהיה הגדרת ברירת המחדל. כדי לפרוס לדור הראשון, משתמשים בפקודה --no-gen2.

    • הדגל --region מציין את האזור שבו הפונקציה תופעל. במאמר מיקומים מופיעה רשימה של האזורים שנתמכים על ידי פונקציות Cloud Run.

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

    • הדגל --source מציין את המיקום של קוד המקור של הפונקציה. פרטים נוספים מופיעים בסעיפים הבאים:

    • הדגל --entry-point מציין את נקודת הכניסה לפונקציה בקוד המקור. זה הקוד שיופעל כשהפונקציה תפעל. הערך של הדגל הזה חייב להיות שם של פונקציה או שם מחלקה מלא שקיים בקוד המקור. מידע נוסף זמין במאמר נקודת כניסה לפונקציה.

    • כדי לציין את הטריגר של הפונקציה, צריך להשתמש בדגלים נוספים (שמסומנים כ-TRIGGER_FLAGS למעלה), בהתאם לטריגר שרוצים להשתמש בו:

      דגלי טריגר תיאור הטריגר
      --trigger-http מפעילים את הפונקציה באמצעות בקשת HTTP(S). מידע נוסף זמין במאמר בנושא טריגרים של HTTP.
      --trigger-topic=YOUR_PUBSUB_TOPIC הפעלת הפונקציה כשמתפרסמת הודעה בנושא Pub/Sub שצוין. מידע נוסף זמין במאמר בנושא טריגרים ב-Pub/Sub.
      --trigger-bucket=YOUR_STORAGE_BUCKET הפעלת הפונקציה כשיוצרים אובייקט או מחליפים אובייקט בקטגוריית Cloud Storage שצוינה. מידע נוסף מופיע במאמר בנושא טריגרים של Cloud Storage.
      --trigger-event=EVENT_TYPE
      [--trigger-resource=RESOURCE]
      הפעלת הפונקציה כשמתרחש האירוע שצוין. חובה לציין משאב עבור סוגים מסוימים של אירועים. מידע נוסף זמין במאמר בנושא טריגרים שנתמכים בפונקציות Cloud Run (דור ראשון).

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

      במאמרי העזרה של gcloud functions deploy מופיע מידע מלא על פקודת הפריסה והדגלים שלה.

      דוגמאות לפקודות פריסה מופיעות במאמר בנושא דוגמאות לפקודות בשורת הפקודה.

פריסה מהמחשב המקומי

בקטע הזה מוסבר איך להשתמש ב-CLI של gcloud כדי לפרוס פונקציה מקוד מקור שנמצא במחשב המקומי.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. פועלים לפי ההוראות לפריסה שמופיעות למעלה באמצעות הפקודה gcloud functions deploy.

    עבור הדגל --source, מציינים נתיב מקומי במערכת קבצים לספריית השורש של קוד המקור של הפונקציה – ראו מבנה ספריית קובצי המקור. אם לא מציינים את הדגל הזה, נעשה שימוש בספריית העבודה הנוכחית.

    אפשר גם להשתמש בדגל --stage-bucket כדי לציין קטגוריה של Cloud Storage שאליה יועלה קוד המקור כחלק מהפריסה.

    במהלך ההעלאה של קוד המקור, פונקציות Cloud Run מוציאות קבצים מיותרים באמצעות הקובץ .gcloudignore.

  3. פריסה מ-Cloud Storage

    בקטע הזה מוסבר איך להשתמש ב-CLI של gcloud כדי לפרוס פונקציה מקוד מקור שנמצא בקטגוריה של Cloud Storage. קוד המקור צריך להיות ארוז כקובץ ZIP.

    כדי שפונקציות Cloud Run יוכלו לקרוא מקטגוריה של Cloud Storage, צריך לתת את ההרשאה storage.objects.get לחשבון שמבצע את הפריסה.

    מידע על שליטה בגישה לקטגוריות מופיע במאמר שימוש בהרשאות IAM במסמכי התיעוד של Cloud Storage.

    עם ההרשאה הזו, אפשר עכשיו לפרוס פונקציה מ-Cloud Storage:

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. פועלים לפי ההוראות לפריסה שמופיעות למעלה באמצעות הפקודה gcloud functions deploy.

      בפרמטר --source, מציינים נתיב ב-Cloud Storage שמתחיל ב-gs://. האובייקט בנתיב חייב להיות קובץ ZIP שמכיל את קוד המקור של הפונקציה. קובצי המקור של הפונקציה צריכים להיות בתיקיית השורש של קובץ ה-ZIP. אפשר לעיין במבנה של ספריית קובצי המקור.

    3. דוגמאות לשורת פקודה

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

      במאמר טריגרים של פונקציות Cloud Run מוסבר על סוגים שונים של טריגרים שנתמכים בפונקציות Cloud Run.

      פונקציית HTTP מקוד מקור מקומי

      נניח שיש לכם פונקציית HTTP באופן הבא:

      • הפונקציה משתמשת ב-Node.js 22.
      • קוד המקור נמצא בספריית העבודה הנוכחית (.).
      • נקודת הכניסה בקוד נקראת myHttpFunction.

      כדי לפרוס את הפונקציה ב-Cloud Run Functions בשם my-http-function באזור us-central1, משתמשים בפקודה הבאה:

      gcloud functions deploy my-http-function \
        --no-gen2 \
        --region=us-central1 \
        --runtime=nodejs22 \
        --source=. \
        --entry-point=myHttpFunction \
        --trigger-http
      

      פונקציית Pub/Sub מקוד מקור ב-Cloud Storage

      נניח שיש לכם פונקציה מבוססת-אירועים באופן הבא:

      • הפונקציה מטפלת באירועים של פרסום הודעות ב-Pub/Sub.
      • הפונקציה משתמשת ב-Python 3.12.
      • קוד המקור נמצא ב-Cloud Storage בנתיב gs://my-bucket/my_function_source.zip.
      • נקודת הכניסה בקוד נקראת pubsub_handler.

      כדי לפרוס את הפונקציה ב-Cloud Run Functions בשם my-pubsub-function באזור europe-west1, ולהגדיר שהפונקציה תופעל על ידי הודעות בנושא Pub/Sub‏ my-topic, משתמשים בפקודה הבאה:

      gcloud functions deploy my-pubsub-function \
        --no-gen2 \
        --region=europe-west1 \
        --runtime=python312 \
        --source=gs://my-bucket/my_function_source.zip \
        --entry-point=pubsub_handler \
        --trigger-topic=my-topic
      

      פונקציה של Cloud Storage מקוד מקור מקומי

      נניח שיש לכם פונקציה מבוססת-אירועים באופן הבא:

      • הפונקציה מטפלת באירועי מחיקה של אובייקטים ב-Cloud Storage.
      • הפונקציה משתמשת ב-Java 17.
      • קוד המקור נמצא באופן מקומי בנתיב ./functions/storage-function.
      • נקודת הכניסה בקוד נקראת myproject.StorageFunction.

      כדי לפרוס את הפונקציה לפונקציות Cloud Run בשם my-storage-function באזור asia-northeast1, וליצור טריגר לפונקציה באמצעות אירועים בקטגוריה של Cloud Storage‏ my-bucket, משתמשים בפקודה הבאה:

      gcloud functions deploy my-storage-function \
        --no-gen2 \
        --region=asia-northeast1 \
        --runtime=java17 \
        --source=./functions/storage-function \
        --entry-point=myproject.StorageFunction \
        --trigger-resource=gs://my-bucket \
        --trigger-event=google.storage.object.delete
      

      השלבים הבאים