הפעלת פונקציה באמצעות בקשת HTTPS

אחרי שיוצרים שירות או פונקציה, Cloud Run מספק נקודת קצה (endpoint) של HTTPS לשירות. אפשר להפעיל את השירות כך שיפעל בתגובה לבקשות HTTPS.

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

הנה כמה תרחישי שימוש:

  • Custom RESTful web API
  • מיקרו-שירות פרטי
  • תוכנת ביניים (middleware) של HTTP או שרת proxy הפוך לאפליקציות האינטרנט
  • אפליקציית אינטרנט ארוזה מראש

יצירת שירותים ציבוריים

כדי ליצור שירות ציבורי ב-Cloud Run, צריך:

  • גישה לשירות מהאינטרנט הציבורי
  • כתובת URL שנועדה לשימוש ציבורי

כדי להגדיר שירות כציבורי, צריך להגדיר את השירות כך שתתאפשר גישה לא מאומתת (ציבורית).

כתובת ה-URL של השירות

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

אפשר להשבית את כתובות ה-URL האלה שמוגדרות כברירת מחדלrun.app.

אפשר לאחזר את כתובת ה-URL של השירות על ידי לחיצה על שם השירות במסוףGoogle Cloud או על ידי הפעלת הפקודה הבאה ב-CLI של gcloud:

gcloud run services describe SERVICE --format 'value(status.url)'

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

אם שירות Cloud Run נוצר כפונקציה באמצעות Cloud Functions v2 API, לשירות מוקצית גם כתובת URL של cloudfunctions.net.

כתובת URL דטרמיניסטית

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

כתובת ה-URL הדטרמיניסטית זמינה רק לפלחי DNS של 63 תווים או פחות. פלח ה-DNS מכיל את שם השירות, מספר הפרויקט ותג או תגים של תנועה.

כתובת ה-URL הדטרמיניסטית של שירות Cloud Run היא בפורמט הבא:

https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app

where:

  • TAG הוא תג תנועה אופציונלי לגרסה שאתם מבקשים.
  • PROJECT_NUMBER הוא Google Cloud מספר הפרויקט.
  • SERVICE_NAME הוא השם של שירות Cloud Run.
  • REGION: שם האזור, למשל europe-west1.

כתובת URL לא דטרמיניסטית

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

כתובת ה-URL הלא דטרמיניסטית של שירות ב-Cloud Run היא בפורמט https://[TAG---]SERVICE_IDENTIFIER.run.app, כאשר TAG מתייחס לתג התנועה האופציונלי של הגרסה שאתם מבקשים, ו-SERVICE_IDENTIFIER הוא מזהה יציב וייחודי של שירות ב-Cloud Run. אל תנתחו את SERVICE_IDENTIFIER כי אין לו פורמט קבוע, והלוגיקה ליצירת SERVICE_IDENTIFIER עשויה להשתנות.

הצגת התשובה באופן שוטף

‫Cloud Run תומך בתגובות HTTP בסטרימינג. לא צריך לקבוע הגדרות כדי להפעיל את התכונה. השרת צריך להגיב עם כותרת תגובה Transfer-Encoding: chunked.

הפניה אוטומטית מ-HTTP ל-HTTPS

ב-Cloud Run, כל בקשות ה-HTTP מופנות אוטומטית ל-HTTPS, אבל ה-TLS מסתיים לפני שהבקשות מגיעות לשירות האינטרנט. אם השירות שלכם יוצר משאבי אינטרנט שמפנים למשאבי אינטרנט אחרים עם כתובות URL לא מאובטחות (http://), יכול להיות שבדף שלכם יוצגו אזהרות או שגיאות לגבי תוכן מעורב. צריך להשתמש בפרוטוקול https בכל מזהי ה-URI של האתרים או החשבונות שמוגדרים כהפניות להוראות של שרת proxy בבקשת ה-HTTP, כמו כותרת ה-HTTP X-Forwarded-Proto.

‫HTTP ו-HTTP/2

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

יצירת שירותים פרטיים

כדי ליצור שירות פרטי ב-Cloud Run, צריך להגביל את הגישה לשירות באמצעות הרשאת ההפעלה של IAM.

אפשר גם להגביל את הגישה לשירות באמצעות מנגנון הרשאה ואימות ברמת האפליקציה, למשל באמצעות Identity Platform.

בדיקת שירותים פרטיים

הדרך הכי קלה לבדוק שירותים פרטיים היא באמצעות שרת ה-proxy של Cloud Run ב-Google Cloud CLI. הפקודה הזו מעבירה את השירות הפרטי דרך פרוקסי אל http://localhost:8080 (או אל היציאה שצוינה באמצעות --port), ומספקת את האסימון של החשבון הפעיל או אסימון אחר שצוין. כך תוכלו להשתמש בדפדפן אינטרנט או בכלי כמו curl. זו הדרך המומלצת לבדיקה פרטית של אתר או API בדפדפן.

אפשר להגדיר פרוקסי לשירות באופן מקומי באמצעות שורת הפקודה הבאה בסביבת Linux,‏ macOS,‏ WSL (מומלץ) או cygwin:

gcloud run services proxy SERVICE --project PROJECT-ID

אפשר גם לבדוק שירותים פרטיים בלי ה-proxy באמצעות כלי כמו curl, ולהעביר טוקן אימות בכותרת Authorization:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

שירות פרטי לשירות

שירות Cloud Run יכול לקרוא לשירות אחר של Cloud Run באמצעות אימות משירות לשירות.

קוד לדוגמה שמפעיל שירות פרטי

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

שימוש בתוכנת ביניים לשיפור השירות

שרתי Proxy ל-HTTPS יכולים להפחית עומס של פונקציונליות נפוצה משירות HTTP, כמו שמירה במטמון, אימות בקשות או הרשאה. במיקרו-שירותים, הרבה פרוקסי HTTP הם חלק מפתרון API Gateway או מ-service mesh כמו Istio.

Google Cloud מוצרים שבהם אפשר להשתמש כדי לשפר את שירות Cloud Run:

  • API Gateway, שבו אפשר להשתמש כדי ליצור, לאבטח ולנטר ממשקי API לשימוש כשרתי proxy לשירותים אחרים של Cloud Run.

  • אירוח ב-Firebase, שבו אפשר להשתמש כדי לבנות קצה קדמי של אפליקציית אינטרנט לשימוש עם Cloud Run כבק-אנד דינמי.