מזהה אזור
הערך REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שאתם בוחרים כשאתם יוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, REGION_ID.r נכלל בכתובות ה-URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
כדי לשדרג את עיבוד התמונות באפליקציות הקיימות של App Engine, אתם יכולים לפרוס שירות טרנספורמציה של תמונות בקובץ אימג' של קונטיינר ב-Cloud Run, ולנתב אליו את הקריאות של שירות Images ב-App Engine.
ההעברה הזו לא דורשת שכתובים משמעותיים של קוד עיבוד התמונות או אירוח של אפליקציית App Engine ב-Cloud Run. במקום זאת, כשמגדירים את האפליקציה, ה-SDK של שירותי App Engine מיירט את הקריאות לשירות App Engine Images ומנתב אותן לשירות Cloud Run. השירות מעבד את התמונות באמצעות מנוע Pillow בקוד פתוח דרך gRPC, ומחזיר את התוצאות לאפליקציה ב-App Engine. ההגדרה הזו מחליפה את הקצה העורפי של שירות התמונות הקודם של App Engine בפתרון מודרני מבוסס-ענן.
מגבלות
כשמשתמשים בשירות עיבוד התמונות בהתאמה אישית עם
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEשמוגדר ל-true, אי אפשר ליצור כתובות URL להצגה. App Engine זורק חריגה בזמן ריצה כשמפעילים את השיטהget_serving_url(). אפשר להשתמש בשיטה הזו רק אם הערך שלAPPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEהואfalseאו אם לא הוגדר ערך. ההגבלה הזו מונעת הסתמכות על הקצה העורפי הקודם לאחסון ולהצגה של תמונות.כדי להציג תמונות, מומלץ להציג אותן ישירות מכתובת URL של Cloud Storage או להשתמש בקטגוריה של Cloud Storage שמגובה על ידי Cloud CDN.
כתובות URL קיימות שיצרתם באמצעות שיחות בשיטה הקודמת של Meet ל-method
get_serving_url()ימשיכו להציג תמונות.כשמשדרגים את גרסת ה-SDK של שירותי App Engine, המערכת של App Engine לא מנתבת באופן אוטומטי קריאות לשירות Cloud Run. האפליקציה תחיל את ההתנהגות החדשה רק אחרי שתגדירו את משתני הסביבה
APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICEו-APPENGINE_IMAGES_SERVICE_ENDPOINT.
לפני שמתחילים
מוודאים שיש לכם גישה לקוד המקור של App Engine.
מפעילים את Cloud Run Admin API ואת Artifact Registry API:
התפקידים הנדרשים
אתם יכולים ליצור חשבון שירות חדש או להשתמש באותו חשבון שירות בניהול המשתמשים ב-Cloud Run שבו אתם משתמשים ב-App Engine. אתם או האדמין שלכם צריכים להקצות לחשבון הפריסה ולחשבון השירות של Cloud Build את תפקידי ה-IAM הבאים.
לחצו כדי לראות את התפקידים הנדרשים לחשבון הפריסה
כדי לקבל את ההרשאות שנדרשות לבנייה ולפריסה מהמקור, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- מפתח מקור ב-Cloud Run (
roles/run.sourceDeveloper) בפרויקט - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות של שירות Cloud Run
כדי לראות את התפקידים הנדרשים לחשבון השירות של Cloud Build, לחצו כאן
Cloud Build משתמש באופן אוטומטי בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בתור חשבון השירות שמוגדר כברירת מחדל ב-Cloud Build כדי ליצור את קוד המקור ואת המשאב של Cloud Run, אלא אם משנים את ההתנהגות הזו. כדי ש-Cloud Build יוכל ליצור את המקורות, צריך לבקש מהאדמין להקצות את התפקיד Cloud Run Builder (roles/run.builder) לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@ \ --role=roles/run.builder
מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud, ואת PROJECT_ID במזהה הפרויקט ב- Google Cloud. במאמר יצירה וניהול של פרויקטים מוסבר איך למצוא את מזהה הפרויקט ואת מספר הפרויקט.
הקצאת התפקיד "מפתח ב-Cloud Run" לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine מתעדכנת תוך כמה דקות.
רשימה של תפקידים והרשאות ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run מתממשק עם ממשקי API שלGoogle Cloud , כמו ספריות הלקוח ב-Cloud, עיינו במדריך להגדרת זהות השירות. מידע נוסף על הקצאת תפקידים זמין במאמרים הרשאות פריסה וניהול הגישה.
תהליך ההעברה
ההעברה כוללת את השלבים הבאים:
- פורסים את שירות המרת התמונות ב-Cloud Run כדי לקבל את כתובת ה-URL של השירות.
- מגדירים את קובצי המקור של App Engine עם כתובת ה-URL של שירות Cloud Run ודגלי הניתוב, ואז פורסים או פורסים מחדש את האפליקציה של App Engine.
- בודקים את האפליקציה כדי לוודא שפונקציית עיבוד התמונות פועלת.
פריסת השירות לטרנספורמציה של תמונות ב-Cloud Run
כדי לפרוס את שירות המרת התמונות ולהגדיר את הגישה שלו ל-Cloud Storage:
פורסים את הקונטיינר של שירות טרנספורמציית התמונות שהוגדר מראש בשירות Cloud Run. חשוב לוודא שאתם פורסים את האפליקציה עם אכיפת אימות (
--no-allow-unauthenticated). ערכת ה-SDK של שירותי App Engine מטפלת באימות כשמתבצעות קריאות לשירות הזה:gcloud run deploy image-processing-service \ --image=us-central1-docker.pkg.dev/gae-bundled-services-images/release/image-processing-service:latest \ --no-allow-unauthenticated \ --region=REGIONמחליפים את REGION באזור שבו פורסים את שירות Cloud Run. מומלץ לפרוס את השירות באותו אזור שבו נמצא שירות App Engine.
שימו לב לכתובת ה-URL של שירות Cloud Run שפרסתם, לדוגמה,
https://image-processing-service-xyz-uc.a..מקצים את התפקיד Cloud Run Invoker (
roles/run.invoker) לחשבון השירות שמוגדר כברירת מחדל ב-App Engine. כך האפליקציה ב-App Engine יכולה לאשר קריאות לשירות הפרטי ב-Cloud Run ולנתב אותן אליו:gcloud run services add-iam-policy-binding image-processing-service \ --member="serviceAccount:PROJECT_ID@" \ --role="roles/run.invoker" \ --region=REGIONמקצים את התפקיד צפייה באובייקטים ב-Cloud Storage (
roles/storage.objectViewer) לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. כך שירות שינוי התמונות יוכל לקרוא תמונות שמאוחסנות ב-Cloud Storage:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@" \ --role="roles/storage.objectViewer"מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט שבו פורסים את שירות Cloud Run.
- PROJECT_NUMBER: מספר הפרויקט שבו פורסים את שירות Cloud Run.
הגדרת קובצי המקור
כדי להגדיר את אפליקציית Python כך שתשתמש בשירות המרת התמונות ב-Cloud Run, פועלים לפי השלבים הבאים:
מוסיפים את יחסי התלות הבאים לקובץ
requirements.txt:appengine-python-standard>=3.0.2אפשר גם להריץ את הפקודה הבאה כדי להתקין יחסי תלות באופן מקומי:
pip install "appengine-python-standard>=3.0.2"מעדכנים את הקובץ
app.yamlכדי להפעיל את ה-proxy ל-API ולהגדיר את משתני הסביבה הנדרשים:runtime: RUNTIME # a supported python version # List the Images service app_engine_bundled_services: - images env_variables: # Enable the custom gRPC Images service APPENGINE_USE_CUSTOM_IMAGES_GRPC_SERVICE: "true" # The URL of the Cloud Run service you deployed APPENGINE_IMAGES_SERVICE_ENDPOINT: "RUN_SERVICE_URL"מחליפים את מה שכתוב בשדות הבאים:
- RUNTIME: גרסת סביבת זמן ריצה נתמכת של Python.
- RUN_SERVICE_URL: כתובת ה-URL של שירות Cloud Run שנפרס.
פורסים את האפליקציה ב-App Engine:
gcloud app deployשירות App Engine נפרס בכתובת
https://PROJECT_ID.REGION_ID.r.appspot.com.מפעילים את הדפדפן וניגשים לשירות האינטרנט באמצעות הפקודה הבאה:
gcloud app browse
בדיקת האפליקציה
כדי לוודא שהאפליקציה משתמשת בשירות Cloud Run לטרנספורמציה של תמונות:
- מפעילים את פונקציונליות עיבוד התמונות באפליקציה.
- בודקים את App Engine ב-Logs Explorer. מוודאים שאין שגיאות שקשורות לקריאות ל-
google.appengine.api.images. - בודקים את היומנים של Cloud Run
image-processing-serviceכדי לוודא ש-Cloud Run קיבל ועיבד את הבקשות.