Mengakses antarmuka command line Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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 serta pengguna.

Tentang versi sintaksis CLI

Airflow di Cloud Composer 2 menggunakan sintaksis CLI Airflow 2

Perintah Airflow CLI yang didukung

Untuk mengetahui daftar lengkap perintah Airflow CLI yang didukung, lihat referensi gcloud composer environments run.

Sebelum memulai

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

  • Di Cloud Composer versi sebelum 2.4.0, Anda memerlukan akses ke bidang kontrol cluster lingkungan untuk menjalankan perintah Airflow CLI.

Menjalankan perintah Airflow CLI

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

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

Ganti:

  • ENVIRONMENT_NAME dengan nama lingkungan.
  • LOCATION dengan region tempat lingkungan berada.
  • SUBCOMMAND dengan 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 --:

Airflow 2

Untuk sintaksis CLI Airflow 2:

  • Tentukan perintah CLI gabungan sebagai sub-perintah.
  • Tentukan argumen apa pun untuk perintah gabungan sebagai argumen sub-perintah, setelah pemisah --.
gcloud composer environments run example-environment \
    dags list -- --output=json

Aliran udara 1

Cloud Composer 2 hanya mendukung Airflow 2.

Lokasi default

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

Contoh

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

Airflow 2

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

Aliran udara 1

Cloud Composer 2 hanya mendukung Airflow 2.

Menjalankan perintah di lingkungan IP pribadi

Mulai dari Cloud Composer versi 2.4.0, Anda dapat menjalankan perintah CLI Airflow di lingkungan IP pribadi tanpa konfigurasi tambahan. Komputer Anda tidak memerlukan akses ke endpoint panel kontrol cluster lingkungan untuk menjalankan perintah ini.

Di Cloud Composer versi sebelum 2.4.0:

Untuk menjalankan perintah CLI Airflow di lingkungan IP Pribadi, jalankan perintah tersebut di mesin yang dapat mengakses endpoint bidang kontrol cluster GKE. Opsi Anda dapat bervariasi bergantung pada konfigurasi cluster pribadi.

Jika akses endpoint publik dinonaktifkan di cluster lingkungan Anda, Anda tidak dapat menggunakan perintah gcloud composer untuk menjalankan Airflow CLI. Agar dapat menjalankan perintah Airflow CLI, lakukan langkah-langkah berikut:

  1. Membuat VM di jaringan VPC
  2. Dapatkan kredensial cluster. Jalankan perintah berikut: bash gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
  • Gunakan kubectl untuk menjalankan perintah Airflow. Contoh:
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
  --container airflow-scheduler -- airflow dags list

Ganti COMPOSER_NAMESPACE dengan namespace yang mirip dengan: composer-2-0-28-airflow-2-3-394zxc12411. Anda dapat menemukan Cloud Composer dalam daftar workload atau menggunakan perintah kubectl get namespaces.

Jika akses endpoint publik diaktifkan di cluster lingkungan, Anda juga dapat menjalankan perintah Airflow CLI dari mesin dengan alamat IP eksternal yang ditambahkan ke jaringan yang diizinkan. Untuk mengaktifkan akses dari mesin Anda, tambahkan alamat eksternal mesin Anda ke daftar jaringan yang diizinkan lingkungan Anda.

Menjalankan perintah Airflow CLI melalui Cloud Composer API

Mulai dari Cloud Composer versi 2.4.0, Anda dapat menjalankan perintah CLI Airflow melalui Cloud Composer API.

Menjalankan 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 subperintah. 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 mengeksekusi perintah Airflow CLI melalui Cloud Composer API, periksa apakah perintah berhasil diselesaikan dengan membuat permintaan PollAirflowCommand dan memeriksa kolom di exitInfo untuk menemukan 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": "39b82312-3a19-4d21-abac-7f8f19855ce7",
  "pod": "airflow-scheduler-1327d8cd68-hblpd",
  "podNamespace": "composer-2-4-0-airflow-2-5-3-184dadaf",
  "nextLineNumber": 1
}

Pemecahan masalah

Tidak ada konektivitas ke bidang kontrol cluster

Saat menjalankan perintah gcloud composer environments run atau kubectl, Anda mungkin mengalami error berikut:

Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"

Gejala: Pesan error ini menunjukkan bahwa tidak ada konektivitas jaringan dari komputer tempat Anda menjalankan perintah ini.

Solusi: Ikuti panduan yang disajikan di bagian Menjalankan perintah di lingkungan IP pribadi atau gunakan petunjuk yang tersedia di bagian waktu tunggu perintah kubectl habis.