Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך להגדיר שירותי SMTP בסביבת Managed Airflow.
לפני שמתחילים
אם סביבת Managed Airflow שלכם מוגדרת לכתובת IP פרטית, צריך לוודא שיש לה קישוריות לנקודת קצה ל-API של שירות האימייל החיצוני (כמו
https://api.sendgrid.comאו שרת ה-SMTP המועדף).
הגדרת שירותי אימייל של SendGrid
כדי לקבל התראות, צריך להגדיר את משתני הסביבה כך שיישלחו אימיילים דרך שירות האימייל SendGrid.
הרשמה ל-SendGrid
אם עדיין לא עשיתם את זה, נרשמים ל-SendGrid ב Google Cloud מסוף, לוחצים על Manage On Provider (ניהול אצל הספק) כדי לעבור לדומיין של SendGrid, ולוחצים על Settings (הגדרות) כדי לאחזר את שם המשתמש וליצור מפתח API. מפתחים יכולים להתחיל עם 12,000 אימיילים בחינם בחודש. Google Cloud
הגדרת משתנים
SendGrid משתמש במפתח ה-API ובכתובת האימייל של השולח כדי לשלוח אימיילים. אפשר לספק את המידע הזה באחת מהדרכים הבאות:
אחסון ערכים ב-Secret Manager
כדי לאחסן ערכים ב-Secret Manager:
מגדירים את Secret Manager בסביבה. חשוב להגדיר הרשאות ואפשרויות הגדרה של Airflow עבור קצה העורף של הסודות.
עוקפים את אפשרויות התצורה הבאות של Airflow:
קטע מפתח ערך emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailיוצרים סוד לחיבור SendGrid בשם
airflow-connections-sendgrid_default. מגדירים את הערך של הסוד ל-URI של החיבור. לדוגמה:sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587מידע נוסף על אחסון חיבורים ב-Secret Manager זמין במאמר ניהול חיבורים ב-Airflow.
מגדירים את כתובת האימייל ב-SendGrid. אי אפשר להגדיר את כתובת האימייל באמצעות סוד. במקום זאת, מבטלים את אפשרות ההגדרה הבאה של Airflow:
קטע מפתח ערך emailfrom_emailכתובת האימייל של השולח, לדוגמה noreply@example.com.
שמירת ערכים ב-Airflow
עוקפים את אפשרויות התצורה הבאות של Airflow:
קטע מפתח ערך emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailב-Airflow, מגדירים את החיבור בשם
sendgrid_default. מציינים את מפתח ה-API של Sendgrid ב-URI של החיבור. לדוגמה:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_defaultמחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה. -
USERNAME: שם המשתמש ב-SendGrid. -
SENDGRID_API_KEY: מפתח ה-API של SendGrid.
-
מגדירים את כתובת האימייל ב-SendGrid. אי אפשר להגדיר את כתובת האימייל באמצעות סוד. במקום זאת, מבטלים את אפשרות ההגדרה הבאה של Airflow:
קטע מפתח ערך emailfrom_emailכתובת האימייל של השולח, לדוגמה noreply@example.com.
בדיקת ההגדרה של SendGrid
כדי לבדוק את ההגדרה של SendGrid:
- יוצרים DAG לבדיקה שמשתמש ב-
EmailOperator. לדוגמה:
- מעלים את ה-DAG לסביבה ובודקים שהמשימה הושלמה.
- נכנסים ל-SendGrid באמצעות פרטי הכניסה שלכם.
- בממשק המשתמש של SendGrid, עוברים לדף Activity (פעילות).
- מחפשים את האימייל ברשימה. אפשר לראות שהאימייל עבר עיבוד ב-SendGrid ונמסר.
אם האימייל לא עובר עיבוד ולא נמסר:
- בודקים את ההגדרה של SendGrid.
- מוודאים שהפעלתם את העורף האחורי של Secret Manager. חשוב לוודא שהענקתם הרשאות נוספות והגדרתם שינויים באפשרויות ההגדרה של Airflow.
- בודקים את מסנן הספאם בתוכנת האימייל.
הגדרת שירותי SMTP של צד שלישי
כדי לשלוח אימייל דרך שירות SMTP של צד שלישי, צריך לשנות את אפשרות ההגדרה של email_backend Airflow ולהגדיר פרמטרים אחרים שקשורים ל-SMTP.
כדי להגדיר שירות SMTP של צד שלישי, צריך להגדיר מחדש את אפשרויות ההגדרה הבאות של Airflow:
| קטע | מפתח | ערך |
|---|---|---|
email |
email_backend |
airflow.utils.email.send_email_smtp |
smtp |
smtp_host |
שם המארח של שרת ה-SMTP. |
smtp |
smtp_user |
שם המשתמש בשרת ה-SMTP. |
smtp |
smtp_port |
היציאה של שרת ה-SMTP. יציאה 25 לא זמינה. אפשר להשתמש ביציאות אחרות, כמו יציאות SMTP סטנדרטיות 465 ו-587. |
smtp |
smtp_password |
אי אפשר להגדיר סיסמה באמצעות smtp_password. כדי להגדיר סיסמת SMTP, פועלים לפי ההוראות במאמר הגדרת סיסמת SMTP. |
smtp |
smtp_mail_from |
כתובת האימייל של השולח, לדוגמה noreply-composer@. |
smtp |
smtp_starttls |
כדי לשפר את האבטחה, מגדירים את האפשרות True. |
smtp |
smtp_ssl |
כדי לשפר את האבטחה, מגדירים את האפשרות True. |
הגדרת סיסמת SMTP לשירות SMTP של צד שלישי
שמירת סיסמת SMTP בטקסט פשוט בקובץ ההגדרות של Airflow היא פרקטיקה לא טובה מבחינת אבטחה. לכן, ב-Managed Airflow אין תמיכה בשיטה הזו. במקום זאת, אפשר להשתמש בשתי שיטות אחרות להגדרת סיסמת SMTP.
שימוש בפקודה כדי לאחזר את סיסמת ה-SMTP
אפשר להשתמש בהגדרות שמחליפות את ברירת המחדל כדי לציין פקודה שמקבלת את סיסמת ה-SMTP. במהלך התקשורת עם שירות ה-SMTP, Airflow משתמש בפקודה הזו כדי לקבל את ערך הסיסמה. מציינים פקודה אחת, בלי אופרטורים של bash כמו צינורות והפניות.
כדי להשתמש בשיטה הזו, צריך לשנות את אפשרות ההגדרה הבאה של Airflow:
| קטע | מפתח | ערך |
|---|---|---|
smtp |
smtp_password_cmd |
מציינים פקודה שמחזירה את סיסמת ה-SMTP. |
שימוש בסוד שמאוחסן ב-Secret Manager כדי לאחזר סיסמת SMTP
אתם יכולים להגדיר את Secret Manager כקצה העורפי של הסודות של Airflow.
אחרי שמגדירים את Secret Manager בסביבת Composer, אפשר לאחסן סיסמת SMTP ב-Secret Manager:
יוצרים סוד חדש:
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automaticמחליפים את
SMTP_PASSWORDבסיסמת ה-SMTP.מגדירים את Airflow כך שיקבל את סיסמת ה-SMTP מ-Secret Manager. כדי לעשות זאת, מבטלים את ההגדרה של אפשרות התצורה הבאה ב-Airflow. Airflow מוסיף אוטומטית את הקידומת
airflow-config-לערך שאתם מציינים עבורsmtp_password_secretכשהוא מאחזר את הסודairflow-config-smtp-passwordמ-Secret Manager.קטע מפתח ערך smtpsmtp_password_secretsmtp-password