Mengakses antarmuka command line Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow memiliki antarmuka command line (CLI) yang dapat Anda gunakan untuk melakukan tugas seperti memicu dan mengelola DAG, mendapatkan informasi tentang tugas dan eksekusi DAG, menambahkan dan menghapus koneksi dan pengguna.

Perintah Airflow CLI yang didukung

Airflow menggunakan sintaksis CLI Airflow, yang dijelaskan dalam dokumentasi Airflow.

Cloud Composer 3 mendukung perintah Airflow CLI berikut:

  • (Airflow 2 dan 3) Perintah gcloud composer environments run menjalankan perintah Airflow CLI untuk lingkungan Anda. Beberapa perintah diblokir dan tidak dapat dijalankan. Lihat referensi perintah untuk mengetahui daftar perintah Airflow CLI yang didukung.

  • (Airflow 3) Alat command line airflowctl mendukung subset perintah Airflow CLI dan menjalankannya menggunakan Airflow REST API. Semua perintah yang tersedia di airflowctl didukung di Cloud Composer. Pastikan akun Airflow pengguna memiliki peran Airflow yang dapat menjalankan perintah tertentu.

Sebelum memulai

Untuk menjalankan perintah Airflow CLI melalui Google Cloud CLI:

  • Akun Google Anda harus memiliki izin untuk menggunakan Google Cloud CLI dengan Cloud Composer dan menjalankan perintah Airflow CLI.

  • Perintah Airflow CLI yang dieksekusi melalui Google Cloud CLI menggunakan environments.executeAirflowCommand kuota.

Untuk mengeksekusi perintah Airflow CLI melalui alat command line airflowctl (di Airflow 3):

Menjalankan perintah Airflow CLI dengan gcloud CLI

Untuk menjalankan perintah CLI Airflow di lingkungan Anda, gunakan gcloud CLI:

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

Ganti kode berikut:

  • ENVIRONMENT_NAME: nama lingkungan Anda.
  • LOCATION: region tempat lingkungan berada.
  • SUBCOMMAND: salah satu perintah Airflow CLI yang didukung.
  • SUBCOMMAND_ARGUMENTS dengan argumen untuk perintah Airflow CLI.

Pemisah argumen sub-perintah

Pisahkan argumen untuk perintah Airflow CLI yang ditentukan dengan --:

  • Tentukan perintah CLI gabungan sebagai sub-perintah.
  • Tentukan argumen untuk perintah gabungan sebagai argumen sub-perintah, setelah pemisah --.

Contoh:

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

Lokasi default

Sebagian besar perintah gcloud composer memerlukan lokasi. Anda dapat menentukan lokasi dengan tanda --location, atau dengan menetapkan lokasi default.

Misalnya, untuk memicu DAG bernama sample_quickstart dengan ID 5077 di lingkungan Cloud Composer Anda:

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

Menjalankan perintah Airflow CLI dengan airflowctl

Alat command line airflowctl adalah utilitas command line yang disediakan oleh Airflow untuk menjalankan perintah Airflow CLI. Airflow CLI 2 mendukung subset perintah Airflow CLI dan menjalankannya menggunakan Airflow REST API. Semua perintah yang tersedia di airflowctl didukung di Cloud Composer.

Otorisasi dan autentikasi dengan airflowctl di Cloud Composer berfungsi dengan cara berikut:

  • Karena airflowctl menggunakan Airflow REST API, pastikan akun pengguna Airflow yang terkait dengan Akun Google atau akun layanan Anda memiliki peran Airflow dengan izin yang cukup untuk menjalankan perintah. Misalnya, beberapa perintah hanya dapat dieksekusi oleh pengguna Airflow yang memiliki peran Admin.

  • Token API yang digunakan oleh airflowctl diberikan dengan perintah gcloud auth. Secara default, token memiliki periode habis masa berlaku 1 jam. Anda dapat mengubahnya dengan argumen --lifetime yang diberikan ke perintah ini.

Untuk mengautentikasi dengan airflowctl, jalankan perintah berikut:

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

Ganti kode berikut:

Contoh:

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

Setelah melakukan autentikasi dengan airflowctl, Anda dapat menjalankan perintah Airflow CLI:

airflowctl dags list

Menjalankan perintah Airflow CLI melalui Cloud Composer API

Di Cloud Composer 3, Anda dapat menjalankan perintah CLI Airflow melalui Cloud Composer API.

Jalankan perintah

Buat permintaan API environments.executeAirflowCommand:

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

Ganti kode berikut:

  • PROJECT_ID: Project ID.
  • LOCATION: region tempat lingkungan berada.
  • ENVIRONMENT_NAME: nama lingkungan Anda.
  • AIRFLOW_COMMAND: Perintah Airflow CLI yang ingin Anda jalankan, seperti dags.
  • AIRFLOW_SUBCOMMAND: Sub-perintah untuk perintah Airflow CLI yang ingin Anda jalankan, seperti list.
  • (opsional) SUBCOMMAND_PARAMETER: Parameter untuk sub-perintah. Jika Anda ingin menggunakan lebih dari satu parameter, tambahkan item lainnya ke daftar.

Contoh:

// 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"
  ]
}

Status perintah polling

Setelah Anda menjalankan perintah Airflow CLI melalui Cloud Composer API, periksa apakah perintah berhasil diselesaikan dengan membuat permintaan PollAirflowCommand dan memeriksa kolom di exitInfo untuk mengetahui error dan kode status. Kolom output berisi baris log.

Untuk mendapatkan status eksekusi perintah dan mengambil log, berikan nilai executionId, pod, dan podNamespace yang ditampilkan oleh ExecuteAirflowCommandRequest:

Contoh:

// 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
}

Langkah berikutnya