Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך לנהל חיבורים ל-Airflow בסביבה שלכם ולגשת אליהם מ-DAG.
מידע על חיבורים ב-Airflow
בקישורים של Aiflow נשמרים פרטי הכניסה ופרטי קישור אחרים, כמו שמות משתמשים, מחרוזות קישור וסיסמאות. ה-DAGs משתמשים בחיבורים כדי לתקשר עם משאבים ב- Google Cloud ולגשת אליהם, וגם לשירותים אחרים מתוך ה-DAGs.
אופרטורים של Airflow ב-DAGs משתמשים בחיבור שמוגדר כברירת מחדל לאופרטור, או שאתם מציינים שם חיבור מותאם אישית.
מידע על אבטחת החיבור
רוב האופרטורים של Airflow לא מקבלים פרטי כניסה ישירות. במקום זאת, הם משתמשים בחיבורי Airflow.
כשיוצרים סביבה חדשה, Managed Airflow יוצר מפתח fernet ייחודי וקבוע לסביבה ומאבטח את תוספי החיבור כברירת מחדל. אפשר לראות את fernet_key בדף Configuration בממשק המשתמש של Airflow.
מידע נוסף על אבטחת חיבורים וסיסמאות ב-Airflow זמין במאמרים Securing Connections ו-Masking sensitive data במסמכי התיעוד של Airflow.
מידע על סוגי החיבורים
Airflow משתמש בחיבורים מסוגים שונים כדי להתחבר לשירותים ספציפיים. לדוגמה, Google Cloud סוג החיבור מתחבר לשירותים אחרים ב- Google Cloud. דוגמה נוספת: סוג החיבור S3 מתחבר לקטגוריה ב-Amazon S3.
כדי להוסיף סוג חיבור ל-Airflow, צריך להתקין חבילת PyPI עם סוג החיבור הזה.
חלק מהחבילות מותקנות מראש בסביבה שלכם. לדוגמה, אפשר להשתמש בחיבור מחבילת apache-airflow-providers-google בלי להתקין חבילות PyPI מותאמות אישית.
חיבורים שהוגדרו מראש
Managed Airflow מגדיר את חיבורי ברירת המחדל הבאים בסביבה שלכם. אתם יכולים להשתמש בחיבורים האלה כדי לגשת למשאבים בפרויקט בלי להגדיר אותם.
google_cloud_defaultbigquery_defaultgoogle_cloud_datastore_defaultgoogle_cloud_storage_default
הוספת חיבור ב-Secret Manager
אפשר לאחסן חיבור ב-Secret Manager בלי להוסיף אותו ל-Airflow. מומלץ להשתמש בגישה הזו כשמאחסנים פרטי כניסה ומידע רגיש אחר.
כדי להוסיף חיבור ב-Secret Manager:
מוסיפים סוד עם שם שתואם לתבנית של החיבורים.
לדוגמה:
airflow-connections-example_connection. ב-DAGs, משתמשים בשם החיבור בלי הקידומת:example_connection.מוסיפים פרמטרים לחיבור:
פורמט JSON
מוסיפים את הייצוג של החיבור ב-JSON כערך של הסוד. לדוגמה:
{ "conn_type": "mysql", "host": "example.com", "login": "login", "password": "password", "port": "9000" }מידע נוסף על פורמט החיבור ב-JSON זמין בתיעוד של Airflow.
פורמט ה-URI
מוסיפים את ייצוג ה-URI של החיבור כערך של secret:
הסוד צריך לאחסן ייצוג URI של החיבור. לדוגמה,
mysql://login:password@example.com:9000.ה-URI חייב להיות מקודד בקידוד URL. לדוגמה, סיסמה שכוללת רווח צריכה לעבור קידוד URL באופן הבא:
mysql://login:secret%20password@example.com:9000.
ל-Airflow יש שיטה נוחה ליצירת כתובות URI של חיבורים. דוגמה לאופן קידוד של כתובת URL מורכבת עם תוספות JSON זמינה במסמכי Airflow.
מוודאים שכל פרמטרי החיבור נקראים בצורה נכונה מ-Secret Manager.
הוספת חיבור ב-Airflow
במקום לאחסן את החיבורים ב-Secret Manager, אפשר לאחסן אותם ב-Airflow.
כדי להוסיף חיבור ב-Airflow:
Airflow CLI
מריצים את הפקודה
connections add Airflow CLI עם Google Cloud CLI. לדוגמה:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-type "mysql" \
--conn-host "example.com" \
--conn-port "9000" \
--conn-login "login" \
--conn-password "password" \
example_connection
אפשר גם להשתמש בארגומנט --conn-uri:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-uri "mysql://login:password@example.com:9000" \
example_connection
מחליפים את מה שכתוב בשדות הבאים:
-
ENVIRONMENT_NAME: השם של הסביבה. -
LOCATION: האזור שבו נמצאת הסביבה.
ממשק המשתמש של Airflow
פועלים לפי ההוראות ליצירת חיבורים בתיעוד של Airflow.
איך מוודאים ש-Airflow קורא חיבור בצורה נכונה
אפשר להריץ את הפקודה connections get של Airflow CLI דרך Google Cloud CLI כדי לבדוק שהחיבור נקרא בצורה נכונה. לדוגמה, אם מאחסנים חיבור ב-Secret Manager, אפשר לבדוק אם Airflow קורא את כל הפרמטרים של החיבור מסוד.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections get \
-- CONNECTION_NAME
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת. -
CONNECTION_NAMEבשם החיבור. אם החיבור מאוחסן ב-Secret Manager, משתמשים בשם החיבור בלי הקידומת של החיבור. לדוגמה, מצייניםexample_connectionבמקוםairflow-connections-example_connection_json.
דוגמה:
gcloud composer environments run example-environment \
--location us-central1 \
connections get \
-- example_connection -o json
שימוש בחיבורי Airflow ב-DAG
בקטע הזה מוסבר איך לגשת לחיבור מ-DAG.
שימוש בחיבור ל-Secret Manager
משתמשים בשם החיבור בלי הקידומת. לדוגמה, אם הסוד נקרא airflow-connections-aws_s3, מציינים aws_s3.
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
אם מאחסנים חיבור שמוגדר כברירת מחדל ב-Secret Manager, אפשר להשמיט את שם החיבור. כדי לראות את שם החיבור שמוגדר כברירת מחדל שבו משתמש אופרטור מסוים, אפשר לעיין במסמכי התיעוד של Airflow. לדוגמה, אופרטור Airflow S3ToGCSOperator משתמש בחיבור aws_default כברירת מחדל. אפשר לשמור את חיבור ברירת המחדל הזה בסוד שנקרא airflow-connections-aws_default.
שימוש בחיבור שמאוחסן ב-Airflow
משתמשים בשם החיבור, כפי שהוא מוגדר ב-Airflow:
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
כדי להשתמש בחיבור ברירת המחדל לאופרטור, משמיטים את שם החיבור. כדי לראות את שם החיבור שמוגדר כברירת מחדל שבו משתמש אופרטור מסוים, אפשר לעיין במסמכי Airflow. לדוגמה, אופרטור S3ToGCSOperator Airflow משתמש בחיבור aws_default כברירת מחדל.
פתרון בעיות
אם בסביבה שלכם אין גישה לסוד שמאוחסן ב-Secret Manager:
מוודאים ש-Secret Manager מוגדר בסביבה שלכם.
בודקים ששם החיבור ב-Secret Manager תואם לחיבור שבו נעשה שימוש ב-Airflow. לדוגמה, אם שם החיבור הוא
example_connection, שם הסוד הואairflow-connections-example_connection.בודקים ש-Airflow קורא חיבור בצורה נכונה.