במדריך הזה נסביר איך להשתמש ב-Cloud Tasks באפליקציית App Engine כדי להפעיל פונקציה ב-Cloud Run ולשלוח הודעת אימייל מתוזמנת.
מטרות
- להבין את הקוד בכל אחד מהרכיבים.
- יוצרים חשבון SendGrid.
- מורידים את קוד המקור.
- פורסים פונקציית Cloud Run כדי לקבל בקשות Cloud Tasks ולשלוח אימייל באמצעות SendGrid API.
- יוצרים תור של Cloud Tasks.
- יוצרים חשבון שירות כדי לאמת את הבקשות של Cloud Tasks.
- פורסים את קוד הלקוח שמאפשר למשתמש לשלוח אימייל.
עלויות
ל-Cloud Tasks, לפונקציות Cloud Run ול-App Engine יש תוכנית בחינם, כך שאם תפעילו את ההדרכה במסגרת התוכנית בחינם של המוצרים האלה, לא תהיה לכם עלות נוספת. מידע נוסף על תמחור
לפני שמתחילים
בוחרים או יוצרים Google Cloud פרויקט.
מאתחלים אפליקציית App Engine בפרויקט:
בדף Welcome to App Engine, לוחצים על Create Application.
בוחרים אזור בשביל הבקשה. המיקום הזה ישמש כפרמטר
LOCATION_IDבבקשות שלכם ל-Cloud Tasks, לכן חשוב לרשום אותו. שימו לב: שני מיקומים, שנקראים europe-west ו-us-central בפקודות של App Engine, נקראים europe-west1 ו-us-central1 בפקודות של Cloud Tasks.בוחרים באפשרות Node.js בשדה Language (שפה) ובאפשרות Standard בשדה Environment (סביבה).
אם מופיע חלון קופץ עם האפשרות הפעלת החיוב, בוחרים את החשבון לחיוב. אם אין לכם חשבון לחיוב, לוחצים על יצירת חשבון לחיוב ופועלים לפי ההוראות באשף.
בדף Get started (תחילת העבודה), לוחצים על Next (הבא). תטפל בזה מאוחר יותר.
מפעילים את ממשקי ה-API של פונקציות Cloud Run ו-Cloud Tasks.
מתקינים ומפעילים את ה-CLI של gcloud.
הסבר על הקוד
בקטע הזה נסביר איך הקוד של האפליקציה פועל.
יצירת המשימה
דף האינדקס מוצג באמצעות פונקציות handler ב-app.yaml. המשתנים שנדרשים ליצירת המשימה מועברים כמשתני סביבה.
הקוד הזה יוצר את נקודת הקצה /send-email. נקודת הקצה הזו מטפלת בשליחת טפסים מדף האינדקס ומעבירה את הנתונים לקוד ליצירת משימות.
הקוד הזה יוצר את המשימה ושולח אותה לתור ב-Cloud Tasks. הקוד יוצר את המשימה על ידי:
ההגדרה של סוג היעד היא
HTTP Request.ציון
HTTP methodלשימוש וURLהיעד.הגדרת הכותרת
Content-Typeלערךapplication/jsonכדי שאפליקציות במורד הזרם יוכלו לנתח את מטען הייעודי המובנה.הוספת כתובת האימייל בחשבון שירות כדי ש-Cloud Tasks יוכל לספק פרטי כניסה ליעד הבקשה, שנדרש לאימות. חשבון השירות נוצר בנפרד.
בודקים שהתאריך שהמשתמש הזין לא חורג מהמקסימום של 30 ימים ומוסיפים אותו לבקשה כשדה
scheduleTime.
יצירת האימייל
הקוד הזה יוצר את פונקציית Cloud Run שהיא היעד של הבקשה של Cloud Tasks. הוא משתמש בגוף הבקשה כדי ליצור אימייל ולשלוח אותו באמצעות SendGrid API.
הכנת הבקשה
הגדרת SendGrid
יוצרים חשבון SendGrid.
- אפשר לעשות את זה באופן ידני דרך האתר של SendGrid
- אפשר גם להשתמש ב-Google Cloud Launcher, שיצור עבורכם חשבון וישלב את החיוב. איך יוצרים חשבון SendGrid באמצעות Cloud Launcher
יוצרים מפתח API של SendGrid:
נכנסים אל חשבון SendGrid.
בתפריט הניווט הימני, פותחים את הגדרות ולוחצים על מפתחות API.
לוחצים על Create API Key ובוחרים באפשרות 'גישה מוגבלת'. בכותרת Mail Send (שליחת אימייל), בוחרים באפשרות Full Access (גישה מלאה).
מעתיקים את מפתח ה-API כשהוא מוצג (הוא יוצג רק פעם אחת, לכן חשוב להדביק אותו במקום כלשהו כדי שאפשר יהיה להשתמש בו בהמשך).
הורדת קוד המקור
משכפלים את מאגר האפליקציה לדוגמה ומעבירים אותו למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitעוברים לספרייה שמכילה את הקוד לדוגמה:
cd cloud-tasks/
פריסת הפונקציה של Cloud Run
מנווטים לספרייה
function/:cd function/פורסים את הפונקציה:
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
מחליפים את הערך
SENDGRID_API_KEYבמפתח ה-API שלכם.בפקודה הזו נעשה שימוש בדגלים:
--trigger-httpכדי לציין את סוג הטריגר של פונקציות Cloud Run.
--no-allow-unauthenticatedכדי לציין שהפעלת הפונקציה מחייבת אימות.--set-env-varכדי להגדיר את פרטי הכניסה שלכם ל-SendGrid
מגדירים את בקרת הגישה לפונקציה כך שרק משתמשים מאומתים יוכלו לגשת אליה.
בוחרים את הפונקציה
sendEmailבממשק המשתמש של Cloud Run functions.אם לא רואים את פרטי ההרשאות של
sendEmail, לוחצים על SHOW INFO PANEL בפינה השמאלית העליונה.לוחצים על הלחצן Add principals (הוספת ישויות) שלמעלה.
מגדירים את New principals לערך
allAuthenticatedUsers.מגדירים את התפקיד.
- פונקציות דור ראשון: מגדירים את התפקיד ל-
Cloud Function Invoker - פונקציות דור שני: מגדירים את התפקיד ל-
Cloud Run Invoker
- פונקציות דור ראשון: מגדירים את התפקיד ל-
לוחצים על SAVE.
יצירת תור ב-Cloud Tasks
יוצרים תור באמצעות הפקודה
gcloudהבאה:gcloud tasks queues create my-queue --location=LOCATION
מחליפים את
LOCATIONבמיקום המועדף של התור, לדוגמה,us-west2. אם לא מציינים את המיקום, ה-CLI של gcloud בוחר את ברירת המחדל.מוודאים שהחשבון נוצר בהצלחה:
gcloud tasks queues describe my-queue --location=LOCATION
מחליפים את
LOCATIONבמיקום של התור.
יצירת חשבון שירות
כדי שהפונקציה של Cloud Run תוכל לאמת את הבקשה, הבקשה של Cloud Tasks צריכה לספק פרטי כניסה בכותרת Authorization. חשבון השירות הזה מאפשר ל-Cloud Tasks ליצור ולהוסיף אסימון OIDC למטרה הזו.
בממשק המשתמש של חשבונות השירות, לוחצים על +יצירת חשבון שירות.
מוסיפים שם לחשבון השירות(שם מוצג ידידותי) ולוחצים על יצירה.
מגדירים את התפקיד ולוחצים על המשך.
- פונקציות דור ראשון: מגדירים את התפקיד ל-
Cloud Function Invoker - פונקציות דור שני: מגדירים את התפקיד ל-
Cloud Run Invoker
- פונקציות דור ראשון: מגדירים את התפקיד ל-
לוחצים על סיום.
פריסת נקודת הקצה (endpoint) וכלי ליצירת משימות ב-App Engine
מנווטים לספרייה
app/:cd ../app/מעדכנים את המשתנים ב-
app.yamlעם הערכים שלכם:כדי לראות את המיקום שלכם בתור, משתמשים בפקודה הבאה:
gcloud tasks queues describe my-queue --location=LOCATION
מחליפים את
LOCATIONבמיקום של התור.כדי למצוא את כתובת ה-URL של הפונקציה, משתמשים בפקודה הבאה:
gcloud functions describe sendEmail
פורסים את האפליקציה בסביבה הרגילה של App Engine באמצעות הפקודה הבאה:
gcloud app deploy
פותחים את האפליקציה כדי לשלוח גלויה באימייל:
gcloud app browse
הסרת המשאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת משאבים
אפשר להסיר את המשאבים שיצרתם ב- Google Cloud כדי שלא יתפסו מכסת שימוש ולא תחויבו עליהם בעתיד. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת פונקציית Cloud Run
נכנסים לדף Cloud Run functions במסוף Google Cloud .
לוחצים על תיבות הסימון לצד הפונקציות.
לוחצים על הלחצן מחיקה בחלק העליון של הדף ומאשרים את המחיקה.
מחיקת התור ב-Cloud Tasks
פותחים את הדף Cloud Tasks queues במסוף.
בוחרים את שם התור שרוצים למחוק ולוחצים על מחיקת התור.
מאשרים את הפעולה.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.