העברת שירותים מהסביבה הרגילה לסביבה הגמישה

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

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

ההבדלים בין הסביבה הרגילה לבין הסביבה הגמישה

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

זהות האפליקציה

כשמריצים את האפליקציה בסביבה הגמישה, אפשר להשתמש בשילוב של משתני סביבה ושירות המטא-נתונים של Compute Engine כדי לקבל מידע על האפליקציה:

פרטי האפליקציה איך ניגשים
מזהה האפליקציה או הפרויקט משתנה הסביבה GOOGLE_CLOUD_PROJECT או המשאב /project/project-id בשרת המטא-נתונים
שם מארח שמוגדר כברירת מחדל השיטה App Engine Admin API apps.get
שם חשבון השירות המשאב /instance/service-accounts בשרת המטא-נתונים
אסימון גישה מסוג OAuth 2.0 המשאב /instances/service-accounts בשרת המטא-נתונים. מידע נוסף זמין במאמר בנושא אימות באמצעות פרטי כניסה של חשבון שירות ב-Compute Engine.

הפונקציונליות הבאה לא זמינה באופן ישיר:

  • לא מוגדרת קטגוריה של Cloud Storage כברירת מחדל בפרויקט. כדי להשתמש בקטגוריה של Cloud Storage באפליקציה, אפשר ליצור קטגוריה של Cloud Storage ולהשתמש במזהה הפרויקט בתור שם הקטגוריה. אחר כך תוכלו להשתמש במשתנה הסביבה GOOGLE_CLOUD_PROJECT באפליקציה כשם הקטגוריה.
  • אי אפשר לחתום על בלובים באמצעות חשבון השירות שמוגדר כברירת מחדל. כדי לעקוף את הבעיה, אפשר להשתמש ב-Identity and Access Management (IAM) API או לספק מפתח פרטי של חשבון שירות לאפליקציה בזמן הפריסה.
  • באופן דומה, אין ממשק API מובנה לקבלת אישורים ציבוריים לאימות חתימות. עם זאת, האישורים הציבוריים של כל חשבון שירות זמינים בכתובת https://www.googleapis.com/robot/v1/metadata/x509/{service account email}.
  • שימו לב: אם אתם משתמשים בסביבת ריצה של Java, ממשקי ה-API של SystemProperty של App Engine לא זמינים בסביבה הגמישה של App Engine. עם זאת, אתם יכולים להגדיר משתני סביבה ב-app.yaml ולהשתמש ב-System.env כדי לקבל את הערכים, כפי שמתואר במאמר הגדרת משתני סביבה.

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

שרשורים ברקע

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

Blobstore

השימוש בשירות Blobstore הוחלף במידה רבה בCloud Storage, גם בסביבה הרגילה וגם בסביבה הגמישה. אפשר להשתמש בספריות הלקוח שלGoogle Cloud כדי לאחסן ולאחזר נתונים ב-Cloud Storage.

מידע נוסף זמין במאמר בנושא שימוש ב-Cloud Storage

יכולות

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

Websockets

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

‫Firestore במצב Datastore ‏ (Datastore)

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

אותם נתונים ב-Datastore זמינים גם אם משתמשים בספריות App Engine, גם אם משתמשים ב Google Cloud ספריות הלקוח וגם אם קוראים ל-API ישירות.

אם אתם משתמשים בספריית Python‏ ndb ומעדיפים גישה ל-Datastore בסגנון NDB, מומלץ לעבור ל-Cloud NDB. מידע נוסף זמין במאגר Cloud NDB.

ספריות הלקוח של Cloud NDB ו-Datastore נתמכות ב-Python 2 וב-Python 3, והן פועלות בסביבה רגילה או בסביבה גמישה של App Engine, וגם באפליקציות שאינן App Engine. עם זאת, המטרה העיקרית שלהן היא לעזור למפתחים ב-Python 2 לעבור משירותים מדור קודם כמו App Engine ndb. בנוסף, המטרה של Cloud NDB היא לשמור על חוויית המשתמש של NDB.

מידע נוסף זמין במאמר בנושא שימוש ב-Datastore.

תמונות

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

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

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

מקורות מידע נוספים זמינים במדריכים הבאים:

רישום ביומן

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

אם אתם רוצים יותר שליטה ברישום ביומן של האפליקציה, את האפשרות לקבץ יומנים ואת האפשרות לרשום מטא-נתונים נוספים ביומן, אתם יכולים להשתמש ישירות ב-API של Cloud Logging עם Google Cloud ספריות הלקוח.

פרטים נוספים זמינים במאמר בנושא כתיבת יומנים של אפליקציות.

שליחת אימייל

שירות האימייל של App Engine לא זמין מחוץ לסביבה הרגילה. תצטרכו להשתמש בספק אימייל מצד שלישי כמו SendGrid,‏ Mailgun או Mailjet כדי לשלוח אימייל. כל השירותים האלה מציעים ממשקי API לשליחת אימיילים מאפליקציות שפועלות בכל מקום.

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

Memcache

שירות Memcache לא זמין בסביבה הגמישה של App Engine. כדי לשמור נתונים של אפליקציות במטמון, משתמשים ב-Memorystore for Redis.

מודולים

ממשק ה-API של Modules לא זמין מחוץ לסביבה הרגילה. עם זאת, אפשר להשתמש בשילוב של משתני סביבה ו-App Engine Admin API כדי לקבל מידע על השירותים הפועלים של האפליקציה ולשנות אותם:

פרטי השירות איך ניגשים
שם השירות הנוכחי משתנה הסביבה GAE_SERVICE
גרסת השירות הנוכחית משתנה הסביבה GAE_VERSION
מזהה המופע הנוכחי משתנה הסביבה GAE_INSTANCE
שם מארח שמוגדר כברירת מחדל השיטה App Engine Admin API apps.get
רשימת השירותים השיטה App Engine Admin API apps.services.list
רשימת הגרסאות של שירות השיטה App Engine Admin API apps.services.versions.list
גרסת ברירת המחדל של שירות, כולל חלוקת תנועה השיטה App Engine Admin API apps.services.get
רשימה של מופעים פעילים של גרסה השיטה App Engine Admin API apps.services.versions.instances.list

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

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

מרחבי שמות

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

OAuth

שירות OAuth לא זמין בסביבה הגמישה. אם אתם צריכים לאמת אסימונים מסוג OAuth 2.0, אתם יכולים לעשות זאת באמצעות השיטה oauth2.tokeninfo של OAuth 2.0 API.

אפליקציה עם פעולה מרחוק

שירות ה-API מרחוק לא רלוונטי לסביבה הגמישה. רוב שירותי הגיבוי, כמו Datastore, שאפשר לגשת אליהם מהסביבה הגמישה, נגישים גם מכל מקום.

שירות החיפוש לא זמין כרגע מחוץ לסביבה הגמישה. אפשר לארח כל מסד נתונים של חיפוש טקסט מלא, כמו Apache Solr ב-Compute Engine או Elasticsearch Service ב-Elastic Cloud, ולגשת אליו גם מהסביבה הרגילה וגם מהסביבה הגמישה.

מפתחות ברגים

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

תור משימות

כדי להשתמש בשירות של תור משימות מסוג push מחוץ לסביבה הרגילה מהדור הראשון, אפשר להשתמש ב-Google Tasks.

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

URL Fetch

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

אם אתם משתמשים ב-Python, מומלץ להשתמש ב-Requests. אם אתם משתמשים ב-Java, מומלץ להשתמש ב-Google HTTP Client Library for Java או ב-OkHttp.

משתמשים

שירות Users לא זמין מחוץ לסביבה הרגילה. אתם יכולים להשתמש בכל מנגנון אימות מבוסס-HTTP בסביבה הגמישה, כמו:

  • Google Identity Platform, שמספק אפשרויות רבות לאימות ולהרשאה של חשבונות משתמשים ב-Google.
  • אימות ב-Firebase, שמאפשר אימות באמצעות שם משתמש וסיסמה וגם אימות זהויות מאוחדות באמצעות Google,‏ Facebook,‏ Twitter ועוד.
  • Auth0, שמספק אימות באמצעות ספקי זהויות שונים ותכונות של כניסה יחידה (SSO).
  • OAuth 2.0 ו-OpenID Connect, שמספקים זהות מאוחדת מהספק שתבחרו. Google היא ספק זהויות של OpenID Connect. יש גם כמה ספקים אחרים.

שימו לב: מכיוון ששירות המשתמשים לא זמין, אי אפשר להשתמש ב-appengine-web.xml ל-Java או ב-app.yaml לסביבות זמן ריצה אחרות כדי להפוך כתובות URL לנגישות רק לאדמינים. תצטרכו לטפל בלוגיקה הזו באפליקציה שלכם.

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

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