הגדרת משתני סביבה (דור ראשון)

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

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

אפשר להוסיף או להסיר משתני סביבת זמן ריצה באמצעות Google Cloud CLI או Google Cloud המסוף.

הגדרת משתני סביבה של זמן הריצה

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

gcloud

כדי להגדיר משתנה סביבה של זמן ריצה באמצעות Google Cloud CLI, משתמשים בדגל --set-env-vars בזמן הפריסה:

gcloud functions deploy --no-gen2 FUNCTION_NAME --set-env-vars FOO=bar FLAGS ...

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

gcloud functions deploy --no-gen2 FUNCTION_NAME --set-env-vars FOO=bar,BAZ=boo FLAGS...

אם רוצים לאחסן את ההגדרות בקובץ (למשל, בניהול מקורות), אפשר להשתמש בקובץ YAML עם הדגל --env-vars-file:

gcloud functions deploy --no-gen2 FUNCTION_NAME --env-vars-file .env.yaml FLAGS...

כאשר התוכן של הקובץ .env.yaml הוא:

 FOO: bar
 BAZ: boo

בדוגמאות שלמעלה, FLAGS... מתייחס לאפשרויות אחרות שמעבירים במהלך הפריסה של הפונקציה. לעיון במפרט המלא של הפקודה deploy, אפשר לעבור אל gcloud functions deploy.

Google Cloud ממשק המשתמש של המסוף

אפשר להגדיר משתני סביבה של זמן הריצה במהלך יצירת הפונקציה במסוף Google Cloud :

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. ממלאים את שדות החובה של הפונקציה.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה זמן ריצה.

  6. בקטע Runtime environment variables, לוחצים על Add variable ומוסיפים את השם והערך.

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

עדכון משתני סביבה של זמן הריצה

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

gcloud

כדי לעדכן משתנה באמצעות Google Cloud CLI, משתמשים בדגל --update-env-vars בזמן הפריסה:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-env-vars FOO=bar

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

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-env-vars FOO=bar,BAZ=boo

Google Cloud ממשק המשתמש של המסוף

כדי לעדכן משתני סביבה של זמן ריצה באמצעות מסוף Google Cloud :

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. לוחצים על Edit.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה זמן ריצה.

  6. מבצעים את העריכות בקטע משתני סביבת זמן הריצה.

מחיקת משתני סביבה של זמן ריצה

gcloud

אם רוצים להסיר משתני סביבה של זמן ריצה באופן סלקטיבי, אפשר להשתמש בדגל --remove-env-vars בזמן הפריסה:

gcloud functions deploy FUNCTION_NAME --no-gen2 --remove-env-vars FOO,BAZ

לחלופין, אפשר למחוק את כל משתני הסביבה של זמן הריצה שהוגדרו קודם באמצעות הדגל --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-env-vars

Google Cloud ממשק המשתמש של המסוף

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

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. לוחצים על Edit.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה זמן ריצה.

  6. בקטע Runtime environment variables (משתני סביבת זמן ריצה), לוחצים על סמל האשפה לצד צמד המפתח/הערך כדי למחוק אותו.

משתני סביבה של זמן ריצה שמוגדרים אוטומטית

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

מפתח תיאור
FUNCTION_TARGET שמורה: הפונקציה שתופעל.
FUNCTION_SIGNATURE_TYPE שמור: סוג הפונקציה: http לפונקציות HTTP ו-event לפונקציות מבוססות-אירוע.
K_SERVICE שמור: השם של משאב הפונקציה.
K_REVISION שמור: מזהה הגרסה של הפונקציה.
PORT שמור: היציאה שדרכה מופעלת הפונקציה.
gcloud functions deploy envVarMemory \
--no-gen2 \
--runtime nodejs10 \
--set-env-vars FUNCTION_MEMORY_MB=2Gi \
--memory 2Gi \
--trigger-http

הגדרה ואחזור של משתני סביבה בזמן ריצה: דוגמה

מגדירים את משתנה הסביבה של זמן הריצה:

Node.js

gcloud functions deploy envVar \
--runtime nodejs22 \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Node.js נתמכת להרצת הפונקציה.

Python

gcloud functions deploy env_vars \
--runtime python312 \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Python נתמכת להרצת הפונקציה.

Go

gcloud functions deploy EnvVar \
--runtime go121 \
--set-env-vars FOO=bar \
--trigger-http

כדי לציין את מזהה זמן הריצה של גרסת Go נתמכת להרצת הפונקציה, משתמשים בדגל --runtime.

Java

gcloud functions deploy java-envVar-function \
--entry-point functions.EnvVars \
--runtime java17 \
--memory 512MB \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Java נתמכת להרצת הפונקציה.

C#‎

gcloud functions deploy csharp-envVar-function \
--entry-point EnvironmentVariables.Function \
--runtime dotnet6 \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת ‎ .NET נתמכת להפעלת הפונקציה.

Ruby

gcloud functions deploy env_vars --runtime ruby33 \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת Ruby נתמכת להרצת הפונקציה.

PHP

 gcloud functions deploy envVar --runtime php82 \
--set-env-vars FOO=bar \
--trigger-http

משתמשים בדגל --runtime כדי לציין את מזהה זמן הריצה של גרסת PHP נתמכת להרצת הפונקציה.

בזמן הריצה, ניגשים למשתנים באופן פרוגרמטי:

Node.js

ב-Node.js משתמשים במאפיין process.env כדי לגשת למשתני סביבת זמן הריצה:

exports.envVar = (req, res) => {
  // Sends 'bar' as response
  res.send(process.env.FOO);
};

Python

ב-Python, משתמשים ב-os.environ כדי לגשת למשתני סביבת זמן הריצה:

import os


def env_vars(request):
    return os.environ.get("FOO", "Specified environment variable is not set.")

Go

ב-Go, משתמשים ב-os.Getenv() כדי לגשת למשתני סביבת זמן הריצה:


// Package tips contains tips for writing Cloud Functions in Go.
package tips

import (
	"fmt"
	"net/http"
	"os"
)

// EnvVar is an example of getting an environment variable in a Go function.
func EnvVar(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "FOO: %q", os.Getenv("FOO"))
}

Java

ב-Java משתמשים ב-System.getenv כדי לגשת למשתני סביבת זמן הריצה:


import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.BufferedWriter;
import java.io.IOException;

public class EnvVars implements HttpFunction {

  // Returns the environment variable "foo" set during function deployment.
  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    BufferedWriter writer = response.getWriter();
    String foo = System.getenv("FOO");
    if (foo == null) {
      foo = "Specified environment variable is not set.";
    }
    writer.write(foo);
  }
}

C#‎

בזמן הריצה, אפשר לגשת למשתני סביבה באמצעות Environment.GetEnvironmentVariable ב-C#:

using Google.Cloud.Functions.Framework;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;

namespace EnvironmentVariables;

public class Function : IHttpFunction
{
    public async Task HandleAsync(HttpContext context)
    {
        string foo = Environment.GetEnvironmentVariable("FOO")
            ?? "Specified environment variable is not set.";
        await context.Response.WriteAsync(foo, context.RequestAborted);
    }
}

Ruby

בזמן הריצה, אפשר לגשת למשתני הסביבה באמצעות ENV ב-Ruby:

require "functions_framework"

FunctionsFramework.http "env_vars" do |_request|
  ENV["FOO"] || "Specified environment variable is not set."
end

PHP

בזמן הריצה, אפשר לגשת למשתני הסביבה באמצעות הפונקציה getenv של PHP:

use Psr\Http\Message\ServerRequestInterface;

function envVar(ServerRequestInterface $request): string
{
    return getenv('FOO') . PHP_EOL;
}

שימוש במשתני סביבה של build

אפשר גם להגדיר משתני סביבה של סביבת build עבור סביבות זמן ריצה שתומכות ב-buildpacks.

משתני סביבה של סביבת build הם צמדי מפתח/ערך שפורסים לצד פונקציה ומאפשרים להעביר מידע על הגדרות ל-buildpacks. לדוגמה, יכול להיות שתרצו להתאים אישית את האפשרויות של הקומפיילר. אפשר להוסיף או להסיר את משתני הסביבה של ה-build באמצעות Google Cloud CLI או ממשק המשתמש של Google Cloud .

הגדרת משתני סביבה של גרסת build

אפשר להשתמש בשיטות האלה כדי ליצור משתנים חדשים או להחליף משתנים קיימים. כדי לבצע שינויים מצטברים, משתמשים בתהליך העדכון (הדגל --update-build-env-vars בפקודה gcloud) שמתואר בקטע הבא.

gcloud

כדי להגדיר משתנה באמצעות Google Cloud CLI, משתמשים בדגל --set-build-env-vars בזמן הפריסה:

gcloud beta functions deploy FUNCTION_NAME --no-gen2 --set-build-env-vars FOO=bar FLAGS...

אפשר גם להגדיר כמה משתני סביבה של build באמצעות רשימה שמופרדת בפסיקים:

gcloud functions deploy FUNCTION_NAME --no-gen2 --set-build-env-vars FOO=bar,BAZ=boo FLAGS...

אם רוצים לאחסן את ההגדרות בקובץ (למשל, בניהול גרסאות), אפשר להשתמש בקובץ YAML עם הדגל --build-env-vars-file:

gcloud functions deploy FUNCTION_NAME --no-gen2 --build-env-vars-file FILE_NAME.yaml FLAGS...

כאשר התוכן של הקובץ *.yaml הוא:

 FOO: bar
 BAZ: boo

בדוגמאות שלמעלה, FLAGS... מתייחס לאפשרויות אחרות שמעבירים במהלך הפריסה של הפונקציה. למידע נוסף על הפקודה deploy, אפשר לעיין במאמר gcloud beta functions deploy.

Google Cloud ממשק המשתמש של המסוף

אפשר גם להגדיר משתני סביבת build במהלך יצירת הפונקציה ב Google Cloud מסוף:

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. ממלאים את שדות החובה של הפונקציה.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה Build (פיתוח).

  6. בקטע משתני סביבת build, לוחצים על הוספת משתנה ומוסיפים את השם והערך.

עדכון משתני סביבה של גרסת build

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

gcloud

כדי להגדיר משתנה באמצעות Google Cloud CLI, משתמשים בדגל --update-build-env-vars בזמן הפריסה:

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-build-env-vars FOO=bar

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

gcloud functions deploy FUNCTION_NAME --no-gen2 --update-build-env-vars FOO=bar,BAZ=boo

Google Cloud ממשק המשתמש של המסוף

כדי לעדכן את משתני הסביבה של ה-build באמצעות מסוף Google Cloud :

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. לוחצים על Edit.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה Build (פיתוח).

  6. מבצעים את העריכות בקטע Build environment variables (משתני סביבת build).

מחיקת משתני סביבה של גרסת build

gcloud

אם רוצים להסיר באופן סלקטיבי משתני סביבה של build, אפשר להשתמש בדגל --remove-build-env-vars בזמן הפריסה:

gcloud functions deploy FUNCTION_NAME --no-gen2 --remove-build-env-vars FOO,BAZ

לחלופין, אפשר למחוק את כל משתני הסביבה של ה-build שהוגדרו קודם באמצעות הדגל --clear-build-env-vars:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-build-env-vars

Google Cloud ממשק המשתמש של המסוף

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

  1. פותחים את הדף Functions Overview במסוף Google Cloud :

    כניסה לדף סקירה כללית של פונקציות Cloud Run.

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

  3. לוחצים על Edit.

  4. פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).

  5. בוחרים בכרטיסייה Build (פיתוח).

  6. בקטע סביבת build (יצירת משתני סביבה), לוחצים על סמל האשפה לצד צמד המפתח/הערך כדי למחוק אותו.

מחזור החיים של משתנה

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

שיטות מומלצות ומשתני סביבה שמורים

חלק ממשתני הסביבה הנוספים מוגדרים באופן אוטומטי בהתאם לזמן הריצה שבו הפונקציה משתמשת. הם מבוססים על מערכת ההפעלה של זמן הריצה (לדוגמה, DEBIAN_FRONTEND,‏ SHLVL או PATH) ועל זמן הריצה של השפה (לדוגמה, NODE_ENV,‏ VIRTUAL_ENV או GOPATH).

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

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

בנוסף, אי אפשר להשתמש במשתני הסביבה הבאים:

מפתח תיאור
ריק ('') המפתחות לא יכולים להיות מחרוזת ריקה.
= מפתחות לא יכולים להכיל את התו '='.
X_GOOGLE_ מפתחות לא יכולים להכיל את הקידומת X_GOOGLE_.

מגבלות גודל

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

במשתני סביבה של סביבת build, אפשר להגדיר עד 100 משתנים, ומחרוזת ההגדרה foo=bar מוגבלת ל-64KiB.

ניהול סודות

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

כדי לאחסן סודות, מומלץ להשתמש ב-Secret Manager. כדי להגדיר לפונקציות של Cloud Run גישה לסודות שמאוחסנים ב-Secret Manager, אפשר לעיין במאמר בנושא הגדרת סודות. שימו לב שאין שילוב ספציפי של פונקציות Cloud Run עם Cloud KMS.

ניידות

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

כדי להימנע מבעיות כאלה, צריך לפעול לפי תקן POSIX למשתני סביבה. אם משתמשים ב Google Cloud מסוף כדי לערוך משתנים,Google Cloud המסוף יציג אזהרה בכל פעם שמגדירים משתנה שעשויות להיות לו בעיות ניוד (אבל לא ימנע את הפריסה). ככלל, מומלץ שמפתחות של משתני סביבה יכללו רק אותיות רישיות, ספרות ו-<underscore> (_), כפי שמוגדר בקבוצת התווים הניידת, ושלא יתחילו בספרה.