גישה לממשק שורת הפקודה (CLI) של Airflow

Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)

ל-Apache Airflow יש ממשק שורת פקודה (CLI) שבעזרתו אפשר לבצע משימות כמו הפעלה וניהול של DAG, קבלת מידע על הפעלות ומשימות של DAG, הוספה ומחיקה של חיבורים ומשתמשים.

פקודות נתמכות ב-Airflow CLI

‫Airflow משתמש בתחביר של Airflow CLI, שמתואר במסמכי התיעוד של Airflow.

‫Managed Airflow (דור 3) תומך בפקודות הבאות של Airflow CLI:

  • (Airflow 2 ו-3) הפקודה gcloud composer environments run מריצה פקודות Airflow CLI עבור הסביבה שלכם. חלק מהפקודות חסומות ואי אפשר להריץ אותן. במאמר העזר על הפקודה מופיעה רשימה של פקודות נתמכות ב-Airflow CLI.

  • (Airflow 3) כלי שורת הפקודה airflowctl תומך בקבוצת משנה של פקודות Airflow CLI ומריץ אותן באמצעות API בארכיטקטורת REST של Airflow. כל הפקודות שזמינות ב-airflowctl נתמכות ב-Managed Airflow. מוודאים שלמשתמש בחשבון Airflow יש תפקיד ב-Airflow שיכול להריץ פקודה ספציפית.

לפני שמתחילים

כדי להריץ פקודות Airflow CLI דרך Google Cloud CLI:

  • לחשבון Google שלכם צריכות להיות הרשאות לשימוש ב-Google Cloud CLI עם Managed Airflow ולהרצת פקודות Airflow CLI.

  • פקודות Airflow CLI שמופעלות דרך Google Cloud CLI צורכות את environments.executeAirflowCommand המכסה.

כדי להריץ פקודות Airflow CLI באמצעות כלי שורת הפקודה airflowctl (ב-Airflow 3):

הרצת פקודות Airflow CLI באמצעות ה-CLI של gcloud

כדי להריץ פקודות של Airflow CLI בסביבות שלכם, משתמשים ב-CLI של gcloud:

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    SUBCOMMAND \
    -- SUBCOMMAND_ARGUMENTS

מחליפים את מה שכתוב בשדות הבאים:

  • ENVIRONMENT_NAME: השם של הסביבה.
  • LOCATION: האזור שבו נמצאת הסביבה.
  • SUBCOMMAND: אחת מהפקודות הנתמכות של Airflow CLI.
  • SUBCOMMAND_ARGUMENTS עם ארגומנטים לפקודת Airflow CLI.

מפריד של ארגומנטים של פקודות משנה

מפרידים בין הארגומנטים של פקודת Airflow CLI שצוינה באמצעות --:

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

דוגמה:

gcloud composer environments run example-environment \
    dags list -- --output=json

מיקום ברירת המחדל

רוב הפקודות של gcloud composer דורשות מיקום. אפשר לציין את המיקום באמצעות הדגל --location או על ידי הגדרת מיקום ברירת מחדל.

לדוגמה, כדי להפעיל DAG בשם sample_quickstart עם המזהה 5077 בסביבת Managed Airflow:

gcloud composer environments run example-environment \
    --location us-central1 dags trigger -- sample_quickstart \
    --run-id=5077

הרצת פקודות Airflow CLI באמצעות airflowctl

כלי שורת הפקודה airflowctl הוא כלי שורת פקודה ש-Airflow מספק להרצת פקודות Airflow CLI. הוא תומך בקבוצת משנה של פקודות Airflow CLI ומריץ אותן באמצעות Airflow API בארכיטקטורת REST. כל הפקודות שזמינות ב-airflowctl נתמכות ב-Managed Airflow.

איך עובד אימות והרשאה ב-airflowctl ב-Managed Airflow:

  • מכיוון ש-airflowctl משתמש ב-API בארכיטקטורת REST של Airflow, צריך לוודא שלחשבון המשתמש ב-Airflow שמשויך לחשבון Google או לחשבון השירות שלכם יש תפקיד ב-Airflow עם הרשאות מספיקות להפעלת פקודה. לדוגמה, יש פקודות שרק משתמשי Airflow עם התפקיד Admin יכולים להריץ.

  • טוקן ה-API שבו משתמשת airflowctl מסופק באמצעות הפקודה gcloud auth application-default print-access-token. כברירת מחדל, תקופת התפוגה של האסימון היא שעה אחת. אפשר לשנות את זה באמצעות הארגומנט --lifetime שמועבר לפקודה הזו.

כדי לבצע אימות באמצעות airflowctl, מריצים את הפקודה הבאה:

airflowctl auth login \
  --api-url WEB_SERVER_URL \
  --api-token $(gcloud auth application-default print-access-token)

מחליפים את מה שכתוב בשדות הבאים:

דוגמה:

airflowctl auth login \
  --api-url https://example-dot-us-central1.composer.googleusercontent.com \
  --api-token $(gcloud auth application-default print-access-token)

אחרי שמבצעים אימות באמצעות airflowctl, אפשר להריץ פקודות Airflow CLI:

airflowctl dags list

הפעלת פקודות Airflow CLI דרך Cloud Composer API

ב-Managed Airflow (דור 3), אפשר להריץ פקודות Airflow CLI דרך Cloud Composer API.

הרצת פקודה

יוצרים בקשת API של environments.executeAirflowCommand:

{
  "environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "command": "AIRFLOW_COMMAND",
  "subcommand": "AIRFLOW_SUBCOMMAND",
  "parameters": [
    "SUBCOMMAND_PARAMETER"
  ]
}

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט.
  • LOCATION: האזור שבו נמצאת הסביבה.
  • ENVIRONMENT_NAME: השם של הסביבה.
  • AIRFLOW_COMMAND: פקודת Airflow CLI שרוצים להריץ, כמו dags.
  • AIRFLOW_SUBCOMMAND: פקודת משנה של פקודת Airflow CLI שרוצים להריץ, כמו list.
  • (אופציונלי) SUBCOMMAND_PARAMETER: פרמטרים של פקודת המשנה. אם רוצים להשתמש ביותר מפרמטר אחד, מוסיפים עוד פריטים לרשימה.

דוגמה:

// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:executeAirflowCommand
{
  "environment": "projects/example-project/locations/us-central1/environments/example-environment",
  "command": "dags",
  "subcommand": "list",
  "parameters": [
    "-o json",
    "--verbose"
  ]
}

בדיקת סטטוס הפקודה

אחרי שמריצים פקודת Airflow CLI דרך Cloud Composer API, בודקים אם הפקודה הושלמה בהצלחה על ידי שליחת בקשת PollAirflowCommand ובדיקת השדות ב-exitInfo כדי לראות אם יש שגיאות וקודי סטטוס. השדה output מכיל שורות ביומן.

כדי לקבל את סטטוס הביצוע של הפקודה ולאחזר יומנים, צריך לספק את הערכים executionId, pod ו-podNamespace שמוחזרים על ידי ExecuteAirflowCommandRequest:

דוגמה:

// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
  "executionId": "a117da94-355d-4ad4-839e-ac39ccb0bf48",
  "pod": "airflow-webserver-66d96b858f-tn96b",
  "podNamespace": "airflow-2-10-2-build-13-226523e4",
  "nextLineNumber": 1
}

המאמרים הבאים