1. מבוא

Cloud Run היא פלטפורמת מחשוב מנוהלת שמאפשרת להריץ קונטיינרים בלי שמירת מצב שאפשר להפעיל באמצעות בקשות HTTP. הוא מבוסס על פרויקט הקוד הפתוח Knative, ומאפשר ניידות של עומסי העבודה בין פלטפורמות שונות. Cloud Run הוא שירות בלי שרת (serverless): הוא מסתיר את כל ניהול התשתית, כך שתוכלו להתמקד במה שהכי חשוב – יצירת אפליקציות מעולות.
במדריך הזה נסביר איך ליצור אפליקציית אינטרנט פשוטה של FastAPI ולפרוס אותה ב-Cloud Run.
מה תלמדו
- איך ליצור אפליקציית FastAPI עם הכיתוב Hello World.
- בדיקת האפליקציה על ידי הפעלת שרת FastAPI במצב
dev. - Cloud Buildpacks ואיך הנוכחות של
fastapiו-uvicornב-requirements.txtמאפשרת שלא יהיה צורך ב-Dockerfile. - איך פורסים את אפליקציית FastAPI ב-Cloud Run.
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר לאורך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על שלושת הערכים האלה מופיע במאמרי העזרה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל במדריך הזה נשתמש ב-Cloud Shell, סביבת שורת פקודה שפועלת בענן.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell (הפעלת Cloud Shell).

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים עם תיאור של השירות. אם הוצג לכם מסך ביניים, לחצו על המשך.

הקצאת המשאבים והחיבור ל-Cloud Shell נמשכים רק כמה רגעים.

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.
אחרי שמתחברים ל-Cloud Shell, אמור להופיע אימות ושהפרויקט מוגדר לפי מזהה הפרויקט.
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שעברתם אימות:
gcloud auth list
פלט הפקודה
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שפקודת gcloud מכירה את הפרויקט:
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם לא, אפשר להגדיר אותו באמצעות הפקודה הבאה:
gcloud config set project <PROJECT_ID>
פלט הפקודה
Updated property [core/project].
3. הפעלת ממשקי ה-API
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build ו-Cloud Run מ-Cloud Shell:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
יוצג פלט של הודעת הצלחה שדומה להודעה הזו:
Operation "operations/..." finished successfully.
עכשיו אפשר להתחיל לעבוד ולכתוב את הבקשה...
4. כתיבת הבקשה
בשלב הזה, תיצרו אפליקציית FastAPI Python עם הפלט Hello World, שתגיב לבקשות HTTP.
ספריית עבודה
משתמשים ב-Cloud Shell כדי ליצור ספריית עבודה בשם helloworld-fastapi ועוברים אליה:
mkdir ~/helloworld-fastapi && cd ~/helloworld-fastapi
main.py
יוצרים קובץ בשם main.py:
touch main.py
עורכים את הקובץ באמצעות עורך שורת הפקודה המועדף (nano, vim או emacs) או באמצעות לחיצה על הלחצן Cloud Shell Editor:

כדי לערוך את הקובץ ישירות באמצעות Cloud Shell Editor, משתמשים בפקודה הזו:
cloudshell edit main.py
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def hello(name: str = "World"):
"""Return a friendly HTTP greeting."""
return {
"message": f"Hello {name}!"
}
הקוד הזה יוצר שירות אינטרנט בסיסי שמגיב לבקשות HTTP GET עם הודעה ידידותית.
requirements.txt
פותחים מחדש את הטרמינל ומוסיפים קובץ בשם requirements.txt כדי להגדיר את התלות:
touch requirements.txt
כדי לערוך את הקובץ ישירות באמצעות Cloud Shell Editor, משתמשים בפקודה הזו:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/fastapi
fastapi[standard]==0.116.1
# https://pypi.org/project/uvicorn
uvicorn==0.35.0
אפליקציית FastAPI מוכנה לפריסה, אבל קודם צריך לבדוק אותה…
5. בדיקת האפליקציה
כדי לבדוק את האפליקציה, משתמשים ב-uv (מנהל הפרויקטים והחבילות המהיר במיוחד של Python), שמותקן מראש ב-Cloud Shell.
כדי לבדוק את האפליקציה, יוצרים סביבה וירטואלית:
uv venv
מתקינים את יחסי התלות:
uv pip install -r requirements.txt
מפעילים את האפליקציה במצב dev:
uv run fastapi dev main.py --port=8080
ביומנים אפשר לראות שאתם במצב פיתוח:
FastAPI Starting development server 🚀
Searching for package file structure from directories with __init__.py files
Importing from /home/user/code/helloworld-fastapi
module 🐍 main.py
code Importing the FastAPI app object from the module with the following code:
from main import app
app Using import string: main:app
server Server started at http://127.0.0.1:8080
server Documentation at http://127.0.0.1:8080/docs
tip Running in development mode, for production use: fastapi run
Logs:
INFO Will watch for changes in these directories: ['/home/user/code/helloworld-fastapi']
INFO Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
INFO Started reloader process [19627] using WatchFiles
INFO Started server process [19629]
INFO Waiting for application startup.
INFO Application startup complete.
בחלון Cloud Shell, לוחצים על הסמל Web Preview ובוחרים באפשרות Preview on port 8080:

אמור להיפתח חלון בדפדפן עם ההודעה Hello World!.
אפשר גם לפתוח עוד סשן של Cloud Shell (כרטיסיית טרמינל חדשה) בלחיצה על הסמל + ושליחת בקשת אינטרנט לאפליקציה שפועלת באופן מקומי:
curl localhost:8080
אמורה להתקבל התשובה הבאה:
{"message": "Hello World!"}
כשמסיימים, חוזרים לסשן הראשי של Cloud Shell ומפסיקים את שרת הפיתוח של FastAPI באמצעות CTRL+C.
האפליקציה פועלת כמו שצריך: הגיע הזמן לפרוס אותה…
6. פריסה ב-Cloud Run
Cloud Run הוא שירות אזורי, כלומר התשתית שמריצה את שירותי Cloud Run ממוקמת באזור ספציפי ומנוהלת על ידי Google כך שתהיה זמינה באופן יתיר בכל האזורים בתוך אותו אזור. מגדירים את האזור שבו ישמש הפריסה, למשל:
REGION=europe-west1
מוודאים שאתם עדיין בספריית העבודה:
ls
צריכים להופיע ברשימה הקבצים הבאים:
main.py requirements.txt
לפני הפריסה, יוצרים קובץ .gcloudignore עם .venv/ בתוכו. כך נמנעת פריסת Cloud Run שכוללת את הסביבה הווירטואלית שנוצרה מ-uv במהלך בדיקה מקומית.
יוצרים את .gcloudignore באמצעות הפקודה הבאה:
echo ".venv/" > .gcloudignore
פורסים את האפליקציה ב-Cloud Run:
gcloud run deploy helloworld-fastapi \
--source . \
--region $REGION \
--allow-unauthenticated
- האפשרות
--allow-unauthenticatedהופכת את השירות לזמין לכולם. כדי למנוע בקשות לא מאומתות, צריך להשתמש במדיניות--no-allow-unauthenticatedבמקום זאת.
בפעם הראשונה, תופיע בקשה ליצור מאגר Artifact Registry. מקישים על Enter כדי לאמת:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
הפעולה הזו תתחיל את ההעלאה של קוד המקור למאגר ב-Artifact Registry ואת יצירת קובץ אימג' של קונטיינר:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
אחר כך מחכים רגע עד שהפריסה תסתיים. אם הפעולה בוצעה ללא שגיאות, כתובת ה-URL של השירות מוצגת בשורת הפקודה:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
אפשר לקבל את כתובת ה-URL של השירות באמצעות הפקודה הזו:
SERVICE_URL=$( \
gcloud run services describe helloworld-fastapi \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
אמור להופיע פלט שדומה לזה:
https://helloworld-fastapi-PROJECTHASH-REGIONID.a.run.app
עכשיו אפשר להשתמש באפליקציה על ידי פתיחת כתובת ה-URL של השירות בדפדפן אינטרנט:

אפשר גם להתקשר לאפליקציה מ-Cloud Shell:
curl $SERVICE_URL?name=me
אמורה להופיע הודעת הפתיחה הצפויה:
{"message": "Hello me!"}
מעולה! הרגע פרסת אפליקציה ב-Cloud Run. Cloud Run מבצע התאמה אוטומטית לעומס (autoscaling) של קובץ אימג' של קונטיינר באופן אופקי כדי לטפל בבקשות שהתקבלו, ואז מצמצם את ההקצאה כשהביקוש יורד. משלמים רק על ה-CPU, הזיכרון והרשת שנצרכו במהלך הטיפול בבקשה בשירות Cloud Run הזה.
7. הסרת המשאבים
ב-Cloud Run לא מחויבים כשלא משתמשים בשירות, אבל יכול להיות שתחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי להימנע מחיובים, אפשר למחוק את המאגר או את פרויקט בענן. כשמוחקים פרויקט בענן, החיוב על כל המשאבים שנעשה בהם שימוש באותו פרויקט נפסק.
כדי למחוק את מאגר קובצי האימג' של הקונטיינר:
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
כדי למחוק את שירות Cloud Run:
gcloud run services delete helloworld-fastapi \
--region $REGION
כדי למחוק את הפרויקט בענן ב-Google Cloud,
- מאחזרים את מזהה הפרויקט הנוכחי:
PROJECT_ID=$(gcloud config get-value core/project)
- חשוב לוודא שזה הפרויקט שרוצים למחוק:
echo $PROJECT_ID
- מחיקת הפרויקט:
gcloud projects delete $PROJECT_ID
8. מעולה!

יצרתם אפליקציית אינטרנט של FastAPI עם הטקסט Hello World ופרסתם אותה ב-Cloud Run.
מה נכלל
- איך ליצור אפליקציית FastAPI עם הכיתוב Hello World.
- בדיקת האפליקציה על ידי הפעלת שרת FastAPI במצב
dev. - Cloud Buildpacks ואיך הנוכחות של
fastapiו-uvicornב-requirements.txtמאפשרת שלא יהיה צורך ב-Dockerfile. - פריסת אפליקציית FastAPI ב-Cloud Run.
מידע נוסף
- מסמכי העזרה של Cloud Run
- כדי לראות עוד אפשרויות, אפשר לעבור על השלבים במאמר Dev to Prod in Three Easy Steps with Cloud Run.
- כדי ליצור מסד נתונים של Cloud SQL, לנהל פרטי כניסה באמצעות Secret Manager ולפרוס את Django, צריך להשלים את המדריך Django ב-Cloud Run.
- עוד הדרכות של Cloud Run...