יצירת אפליקציית Python בסביבה גמישה של App Engine

מזהה אזור

REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, המחרוזת REGION_ID.r כלולה בכתובות ה-URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.

מידע נוסף על מזהי אזורים

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

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. התקינו את ה-CLI של Google Cloud.

  6. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  11. התקינו את ה-CLI של Google Cloud.

  12. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

דרישות מוקדמות נוספות

  1. מאתחלים את אפליקציית App Engine עם הפרויקט ובוחרים את האזור שלה:

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    כשמופיעה בקשה, בוחרים את האזור שבו רוצים למקם את אפליקציית App Engine.

  2. מתקינים את הרכיבים הבאים במחשב המקומי:

    • מריצים את הפקודה הבאה כדי להתקין את הרכיב gcloud שכולל את התוסף App Engine ל-Python:

      gcloud components install app-engine-python
      

  3. מכינים את הסביבה לפיתוח בשפת Python. מומלץ להתקין במערכת את הגרסה האחרונה של Python‏, pip, וכלים קשורים אחרים. הוראות מופיעות במדריך להגדרת סביבת הפיתוח בשפת Python.

המיקומים של App Engine

‫App Engine הוא אזורי, כלומר התשתית שמריצה את האפליקציות שלכם ממוקמת באזור ספציפי, ו-Google מנהלת אותה כך שהיא זמינה באופן יתירתי בכל התחומים באזור הזה.

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

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

אם כבר יצרתם אפליקציית App Engine, תוכלו לראות את האזור שלה באחת מהדרכים הבאות:

במדריך המקוצר הזה נדגים את האפליקציה העדכנית ביותר של Python 3 שנכתבה באמצעות Flask, פלטפורמת אינטרנט שאפשר לפרוס ב-App Engine. למרות שבקוד לדוגמה הזה נעשה שימוש ב-Flask, אפשר להשתמש בכל מסגרת אינטרנט שעומדת בדרישות שלמעלה. מסגרות חלופיות כוללות את Django,‏ Pyramid,‏ Bottle ו-web.py.

הורדת אפליקציית Hello World

יצרנו אפליקציית Hello World ל-App Engine כדי שתוכלו להתרשם במהירות מפריסת אפליקציה ב- Google Cloud.

  1. משכפלים את מאגר האפליקציות לדוגמה Hello World למחשב המקומי.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.

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

       cd python-docs-samples/appengine/flexible/hello_world
    

הפעלת Hello World במחשב המקומי

כדי להריץ את אפליקציית Hello World במחשב המקומי:

Mac OS / Linux

  1. יוצרים סביבת Python מבודדת:
    python3 -m venv env
    source env/bin/activate
  2. אם אתם לא נמצאים בספרייה שמכילה את הקוד לדוגמה, עוברים לספרייה שמכילה את הקוד לדוגמה של hello_world. לאחר מכן מתקינים את התלות:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  3. מריצים את האפליקציה:
    python main.py
  4. בדפדפן האינטרנט, מזינים את הכתובת הבאה:
    http://localhost:8080

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

Windows

משתמשים ב-PowerShell כדי להריץ את חבילות Python.

  1. מוצאים את ההתקנה של PowerShell.
  2. לוחצים לחיצה ימנית על קיצור הדרך ל-PowerShell ומפעילים אותו כאדמין.
  3. יוצרים סביבת Python מבודדת.
    python -m venv env
    .\env\Scripts\activate
  4. עוברים לספריית הפרויקט ומתקינים את יחסי התלות. אם אתם לא בספרייה שמכילה את הקוד לדוגמה, עוברים לספרייה שמכילה את הקוד לדוגמה hello_world. לאחר מכן, מתקינים את יחסי התלות:
    cd YOUR_SAMPLE_CODE_DIR
    pip install -r requirements.txt
  5. מריצים את האפליקציה:
    python main.py
  6. בדפדפן האינטרנט, מזינים את הכתובת הבאה:
    http://localhost:8080

ההודעה Hello World מאפליקציית הדוגמה מוצגת בדף. בחלון הטרמינל, מקישים על Ctrl+C כדי לצאת משרת האינטרנט.

פריסה והפעלה של Hello World ב-App Engine

כדי לפרוס את האפליקציה בסביבה הגמישה של App Engine:

  1. מריצים את הפקודה הבאה מהספרייה hello_world כדי לפרוס את אפליקציית Hello World:

    gcloud app deploy

    מידע על דגלים אופציונליים

    דיווחים נפוצים של פקודת gcloud

    • כוללים את הדגל --version כדי לציין מזהה שמזהה באופן ייחודי את הגרסה הזו של האפליקציה, אחרת המערכת תיצור מזהה בשבילכם. לדוגמה: --version [YOUR_VERSION_ID]
    • כוללים את הדגל --project כדי לציין מזהה פרויקט חלופי ב- Google Cloud , שונה מזה שהוגדר כברירת מחדל בכלי gcloud. דוגמה: --project [YOUR_PROJECT_ID]

    דוגמה:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    במאמר בדיקה ופריסה של האפליקציה מוסבר איך לפרוס את האפליקציה משורת הפקודה. רשימה של כל הדגלים של הפקודות מופיעה במאמר בנושא gcloud app deploy.

  2. מפעילים את הדפדפן כדי לראות את האפליקציה בכתובת https://PROJECT_ID.REGION_ID.r.appspot.com

    gcloud app browse
    כאשר PROJECT_ID מייצג את מזהה הפרויקט Google Cloud.

הפעם, הדף שמציג את ההודעה Hello World מועבר על ידי שרת אינטרנט שפועל במופע App Engine.

מזל טוב! פרסתם את האפליקציה הראשונה שלכם ב-App Engine בסביבה הגמישה של App Engine.

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

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

הסרת המשאבים

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

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

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים

לומדים את כל הפלטפורמה

עכשיו, אחרי שהבנתם איך מפתחים ומפעילים אפליקציות App Engine, אתם יכולים לעיין בשאר התוכן של Google Cloud. כבר מותקן אצלכם Google Cloud CLI, שכולל את הכלים שמאפשרים לכם ליצור אינטראקציה עם מוצרים כמו Cloud SQL, ‏ Cloud Storage,‏ Firestore ועוד.

מידע על סביבה גמישה של App Engine

הנה כמה נושאים שיעזרו לכם להמשיך ללמוד על App Engine:

סקר קוד של Hello World

האפליקציה Hello World היא האפליקציה הכי פשוטה שאפשר ליצור ב-App Engine, כי היא מכילה רק שירות אחד, יש לה רק גרסה אחת וכל הקוד שלה נמצא בספריית השורש של האפליקציה. בקטע הזה מתואר כל אחד מקובצי האפליקציה בפירוט.

main.py

אפליקציית Hello World היא אפליקציית Flask בסיסית עם קובץ אחד.

from flask import Flask


app = Flask(__name__)


@app.route("/")
def hello() -> str:
    """Return a friendly HTTP greeting.

    Returns:
        A string with the words 'Hello World!'.
    """
    return "Hello World!"


if __name__ == "__main__":
    # This is used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app.
    app.run(host="127.0.0.1", port=8080, debug=True)

app.yaml

בקובץ app.yaml מפורטות ההגדרות הבאות של האפליקציה:

  • הערך env: flex מציין שהאפליקציה משתמשת בסביבה הגמישה של App Engine.
  • מציינת את סביבת זמן הריצה שבה האפליקציה משתמשת. אם לא כוללים את ההגדרה runtime_version, ‏ App Engine משתמש בגרסת Python העדכנית ביותר כגרסת ברירת המחדל של האפליקציה.

  • הקובץ entrypoint מציין ל-App Engine איך להפעיל את האפליקציה. האפליקציה הזו משתמשת ב-gunicorn כדי להפעיל את אפליקציית Python כחלופה לשרת הפיתוח של Flask (שמשמש להרצה מקומית). המשתנה $PORT מוגדר על ידי App Engine כשהוא מפעיל את האפליקציה. מידע נוסף על entrypoint זמין במאמר הפעלת אפליקציה.

# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  operating_system: ubuntu24
  runtime_version: 3.12

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

requirements.txt

requirements.txt ומנהל החבילות של Python‏ pip מגדירים ומתקינים את יחסי התלות של האפליקציה. כדי להריץ את Hello World צריך את Flask, מסגרת אינטרנט, ואת Gunicorn, שרת WSGI.

Flask==3.1.3; python_version >= '3.9'
gunicorn==22.0.0

requirements.txt מגדיר את הספריות שיוגדרו באופן מקומי וגם כשפורסים ל-App Engine.