הגדרת משתני סביבה (דור ראשון)
אפשר לפרוס צמדי מפתח/ערך שרירותיים לצד פונקציית 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 :
פותחים את הדף Functions Overview במסוף Google Cloud :
לוחצים על יצירת פונקציה.
ממלאים את שדות החובה של הפונקציה.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה זמן ריצה.
בקטע 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 :
פותחים את הדף Functions Overview במסוף Google Cloud :
כדי לעבור לדף הפרטים של פונקציה קיימת, לוחצים עליה.
לוחצים על Edit.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה זמן ריצה.
מבצעים את העריכות בקטע משתני סביבת זמן הריצה.
מחיקת משתני סביבה של זמן ריצה
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 :
פותחים את הדף Functions Overview במסוף Google Cloud :
כדי לעבור לדף הפרטים של פונקציה קיימת, לוחצים עליה.
לוחצים על Edit.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה זמן ריצה.
בקטע 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 כדי לגשת למשתני סביבת זמן הריצה:
Python
ב-Python, משתמשים ב-os.environ כדי לגשת למשתני סביבת זמן הריצה:
Go
ב-Go, משתמשים ב-os.Getenv() כדי לגשת למשתני סביבת זמן הריצה:
Java
ב-Java משתמשים ב-System.getenv כדי לגשת למשתני סביבת זמן הריצה:
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:
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 מסוף:
פותחים את הדף Functions Overview במסוף Google Cloud :
לוחצים על יצירת פונקציה.
ממלאים את שדות החובה של הפונקציה.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה Build (פיתוח).
בקטע משתני סביבת 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 :
פותחים את הדף Functions Overview במסוף Google Cloud :
כדי לעבור לדף הפרטים של פונקציה קיימת, לוחצים עליה.
לוחצים על Edit.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה Build (פיתוח).
מבצעים את העריכות בקטע 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 :
פותחים את הדף Functions Overview במסוף Google Cloud :
כדי לעבור לדף הפרטים של פונקציה קיימת, לוחצים עליה.
לוחצים על Edit.
פותחים את הקטע Runtime, build and connections settings (הגדרות של זמן ריצה, build וחיבורים).
בוחרים בכרטיסייה Build (פיתוח).
בקטע סביבת 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> (_), כפי שמוגדר בקבוצת התווים הניידת, ושלא יתחילו בספרה.