ניהול העלויות של App Engine

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

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

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

מציינים את המספר המקסימלי של מופעים

עלויות השימוש ב-App Engine בדרך כלל משתנות בהתאם לכמות התנועה שהאפליקציה מקבלת, ולכן אפשר להגביל את העלויות על ידי הגבלת מספר המופעים ש-App Engine יכול ליצור.

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

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

יצירת התראות לגבי תקציב

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

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

בחירת ההיקף של התראה לגבי תקציב

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

כדי ליצור התראת תקציב רק לעלויות מ-App Engine, בשדה Products של התראת התקציב, בוחרים באפשרות App Engine. ההתראה תופעל כשהעלות הכוללת של כל המשאבים ב-App Engine תעלה על הסכום שציינתם, כולל:

  • שעות שימוש במופע בסביבה הרגילה של App Engine
  • שעות שימוש במופע ו-RAM בסביבה הגמישה של App Engine
  • שירותי App Engine בחבילה

לרשימה המלאה של משאבי App Engine שניתנים לחיוב

השבתה ידנית של האפליקציה

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

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

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

השבתת האפליקציה באופן אוטומטי

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

בדומה להשבתה ידנית של אפליקציה:

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

כדי להשבית את האפליקציה באופן אוטומטי:

  1. יצירת התראה לגבי תקציב ששולחת התראה לנושא Pub/Sub. פרטים נוספים מופיעים במאמר בנושא ניהול פעולות פרוגרמטיות בתגובה להתראות.

    כדי ליצור התראת תקציב רק לעלויות מ-App Engine, בשדה Budget's Products בוחרים באפשרות App Engine. מידע על המשאבים שיכולים להפעיל את ההתראה הזו זמין במאמר בנושא יצירת התראות לגבי תקציב.

  2. ב-Cloud Run Functions, יוצרים פונקציה שמופעלת על ידי נושא Pub/Sub. פרטים נוספים זמינים במאמר יצירת Cloud Function.

    כשיוצרים את הפונקציה:

    1. משתמשים בקוד המקור הבא:

      import base64
      import json
      import os
      from googleapiclient import discovery
      APP_NAME = os.getenv("GCP_PROJECT")
      
      
      def limit_use_appengine(data, context):
          pubsub_data = base64.b64decode(data["data"]).decode("utf-8")
          pubsub_json = json.loads(pubsub_data)
          cost_amount = pubsub_json["costAmount"]
          budget_amount = pubsub_json["budgetAmount"]
          if cost_amount <= budget_amount:
              print(f"No action necessary. (Current cost: {cost_amount})")
              return
      
          appengine = discovery.build("appengine", "v1", cache_discovery=False)
          apps = appengine.apps()
      
          # Get the target app's serving status
          target_app = apps.get(appsId=APP_NAME).execute()
          current_status = target_app["servingStatus"]
      
          # Disable target app, if necessary
          if current_status == "SERVING":
              print(f"Attempting to disable app {APP_NAME}...")
              body = {"servingStatus": "USER_DISABLED"}
              apps.patch(appsId=APP_NAME, updateMask="serving_status", body=body).execute()
      
      
    2. מוסיפים את יחסי התלות הבאים לקובץ requirements.txt של הפונקציה:

      google-api-python-client==2.131.0
    3. בקטע Function to execute (פונקציה להפעלה), מזינים limit_use_appengine.

    4. לוחצים על Environment variables, networking, timeouts and more (משתני סביבה, רשת, פסק זמן ועוד).

    5. בוחרים חשבון שירות עם התפקיד App Engine Admin. חשבון השירות שמוגדר כברירת מחדל ב-App Engine מקבל את התפקיד הזה כברירת מחדל.

  3. בדיקת הפונקציה.

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

כדי לוודא שהפונקציה פועלת כמו שצריך, אפשר לעיין בלוח הבקרה של App Engine. הודעה מופיעה בחלק העליון של המסך ומציינת שהאפליקציה מושבתת.

מעבר ללוח הבקרה של App Engine

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

מעבר להגדרות האפליקציה