Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
ל-Apache Airflow יש ממשק API בארכיטקטורת REST שאפשר להשתמש בו כדי לבצע משימות כמו קבלת מידע על הפעלות ומשימות של DAG, עדכון DAG, קבלת הגדרות של Airflow, הוספה ומחיקה של חיבורים ורישום משתמשים.
דוגמה לשימוש ב-Airflow API בארכיטקטורת REST עם פונקציות Cloud Run מופיעה במאמר בנושא הפעלת DAG באמצעות פונקציות Cloud Run.
גרסאות של Airflow REST API
- Airflow 2 משתמש ב-Airflow REST API v1.
- API בארכיטקטורת REST ניסיוני הוצא משימוש על ידי Airflow.
הגדרת Airflow API בארכיטקטורת REST
ה-API בארכיטקטורת REST של Airflow v1 מופעל כברירת מחדל ב-Airflow 2.
ב-Managed Airflow נעשה שימוש בקצה עורפי משלו לאימות API.ההרשאה פועלת בדרך הרגילה ש-Airflow מספק. כשמשתמש חדש מאשר גישה דרך ה-API, החשבון של המשתמש מקבל את התפקיד Op כברירת מחדל.
אפשר להפעיל או להשבית את API בארכיטקטורת REST של Airflow, או לשנות את תפקיד המשתמש שמוגדר כברירת מחדל על ידי שינוי מברירת המחדל אפשרויות ההגדרה הבאות של Airflow:
| קטע | מפתח | ערך | הערות |
|---|---|---|---|
api
|
(Airflow 2.2.5 ומגרסאות קודמות) auth_backend (Airflow 2.3.0 ומגרסאות מאוחרות יותר) auth_backends
|
airflow.composer.api.backend.composer_auth
|
כדי להשבית את ה-API היציב ל-REST, משנים את הערך ל-
airflow.api.auth.backend.deny_all |
api
|
composer_auth_user_registration_role
|
Op
|
אפשר לציין כל תפקיד אחר. |
התרת קריאות ל-API בארכיטקטורת REST של Airflow באמצעות בקרת גישה לשרת האינטרנט
בהתאם לשיטה שבה משתמשים כדי לקרוא ל-Airflow API בארכיטקטורת REST, שיטת הקריאה יכולה להשתמש בכתובת IPv4 או IPv6. חשוב לזכור לבטל את החסימה של תנועת ה-IP אל Airflow REST API באמצעות בקרת גישה לשרת האינטרנט.
אם אתם לא בטוחים מאיזה כתובות IP יישלחו הקריאות שלכם ל-Airflow API בארכיטקטורת REST, אתם יכולים להשתמש באפשרות ברירת המחדל להגדרה, שהיא All IP addresses have access (default).
ביצוע קריאות ל-Airflow API בארכיטקטורת REST
בקטע הזה מופיעה דוגמה לסקריפט Python שאפשר להשתמש בו כדי להפעיל DAG באמצעות Airflow API בארכיטקטורת REST.
בסקריפט, מגדירים את המשתנים הבאים:
-
dag_id: שם של DAG, כפי שמוגדר בקובץ המקור של ה-DAG. -
dag_config: הגדרות להרצת DAG.
web_server_url: כתובת ה-URL של שרת האינטרנט של Airflow. הפורמט הואhttps://<web-server-id>.composer.googleusercontent.com.(Airflow 3)
logical_date: התאריך הלוגי של הפעלת ה-DAG.
גישה ל-Airflow API בארכיטקטורת REST באמצעות חשבון שירות
במסד הנתונים של Airflow בגרסאות Airflow שקודמות ל-2.3.0, האורך של שדה האימייל מוגבל ל-64 תווים. לפעמים לחשבונות שירות יש כתובות אימייל שארוכות מ-64 תווים. אי אפשר ליצור משתמשי Airflow לחשבונות שירות כאלה בדרך הרגילה. אם אין משתמש Airflow לחשבון שירות כזה, גישה ל-Airflow API בארכיטקטורת REST תגרום לשגיאות HTTP 401 ו-403.
כפתרון עקיף, אפשר לרשום מראש משתמש Airflow לחשבון שירות. כדי לעשות זאת, משתמשים ב-accounts.google.com:NUMERIC_USER_ID כשם המשתמש ובמחרוזת ייחודית כלשהי ככתובת האימייל.
כדי לקבל את
NUMERIC_USER_IDלחשבון שירות, מריצים את הפקודה:gcloud iam service-accounts describe \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --format="value(oauth2ClientId)"מחליפים את:
-
SA_NAMEבשם של חשבון השירות. -
PROJECT_IDבמזהה הפרויקט (Project ID).
-
יוצרים משתמש Airflow עם התפקיד
Opלחשבון השירות:ממשק המשתמש של Airflow
נכנסים אל אבטחה > רשימת משתמשים ולוחצים על הוספת רשומה חדשה. למשתמש שלכם ב-Airflow צריך להיות תפקיד
Adminכדי לפתוח את הדף הזה.מציינים את
accounts.google.com:NUMERIC_USER_IDכשם המשתמש. מחליפים אתNUMERIC_USER_IDבמזהה המשתמש שהתקבל בשלב הקודם.מציינים מזהה ייחודי בתור האימייל. אפשר להשתמש בכל מחרוזת ייחודית.
מציינים את התפקיד של המשתמש. לדוגמה,
Op.מוודאים שהתיבה פעיל? מסומנת.
מציינים את השם הפרטי ואת שם המשפחה של המשתמש. אפשר להשתמש בכל מחרוזת.
לוחצים על Save.
gcloud
מריצים את הפקודה הבאה ב-CLI של Airflow:
gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ users create -- \ -u accounts.google.com:NUMERIC_USER_ID \ -e UNIQUE_ID \ -f UNIQUE_ID \ -l - -r Op --use-random-passwordמחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת. -
NUMERIC_USER_IDעם מזהה המשתמש שהתקבל בשלב הקודם. -
UNIQUE_IDמחליפים במזהה של משתמש Airflow. אפשר להשתמש בכל מחרוזת ייחודית.
אחרי שיוצרים משתמש Airflow לחשבון שירות, מתבצעת כניסה ל-Airflow של מי שקורא ל-API ומאומת כחשבון השירות, והוא מזוהה כמשתמש רשום מראש.
התאמה לעומס (scaling) של רכיב Airflow API בארכיטקטורת REST
נקודות הקצה של Airflow API בארכיטקטורת REST ושל Airflow UI מופעלות בתוך שרת האינטרנט של Airflow. אם אתם משתמשים ב-API בארכיטקטורת REST באופן אינטנסיבי, כדאי להגדיל את כמות המעבד (CPU) והזיכרון שזמינים לשרת האינטרנט של Airflow, בהתאם לעומס הצפוי.