Mengakses CLI Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

Tentang versi sintaksis CLI

Airflow di Cloud Composer 2 menggunakan sintaksis Airflow 2 CLI

Perintah CLI Airflow yang didukung

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

Sebelum memulai

  • Anda harus memiliki izin yang cukup untuk menggunakan command line gcloud dengan Cloud Composer dan menjalankan perintah CLI Airflow. Untuk selengkapnya informasi, lihat kontrol akses.

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

Menjalankan perintah CLI Airflow

Untuk menjalankan perintah CLI Airflow 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 CLI Airflow yang didukung.
  • SUBCOMMAND_ARGUMENTS dengan argumen untuk perintah CLI Airflow.

Pemisah argumen sub-perintah

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

Aliran udara 2

Untuk sintaksis CLI Airflow 2:

  • Menetapkan perintah CLI gabungan sebagai sub-perintah.
  • Menentukan 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 flag --location, atau menurut menyetel lokasi default.

Contoh

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

Aliran udara 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 Airflow CLI perintah pada lingkungan IP pribadi tanpa konfigurasi tambahan. Nama komputer ini tidak memerlukan akses ke bidang kontrol cluster lingkungan endpoint untuk menjalankan perintah ini.

Di Cloud Composer versi sebelum 2.4.0:

Untuk menjalankan perintah CLI Airflow di lingkungan IP Pribadi, menjalankannya pada mesin yang dapat mengakses layanan endpoint bidang kontrol. Opsi yang tersedia dapat bervariasi bergantung pada konfigurasi cluster pribadi.

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

  1. Membuat VM di jaringan VPC Anda
  2. Mendapatkan 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 dengan menggunakan perintah kubectl get namespaces.

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

Menjalankan perintah CLI Airflow melalui Cloud Composer API

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

Menjalankan perintah

Buat permintaan environments.executeAirflowCommand API:

{
  "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: wilayah tempat lingkungan berada.
  • ENVIRONMENT_NAME: nama lingkungan Anda.
  • AIRFLOW_COMMAND: Perintah CLI Airflow yang ingin Anda jalankan, seperti dags.
  • AIRFLOW_SUBCOMMAND: Sub-perintah untuk perintah CLI Airflow yang yang ingin dieksekusi, seperti list.
  • (opsional) SUBCOMMAND_PARAMETER: Parameter untuk sub-perintah. Jika Anda ingin menggunakan lebih dari satu parameter, tambahkan lebih banyak item ke dalam 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 menjalankan perintah CLI Airflow melalui Cloud Composer API, periksa apakah perintah berhasil diselesaikan dengan membuat PollAirflowCommand dan memeriksa di exitInfo untuk kode status dan error. Kolom output berisi baris log.

Untuk mendapatkan status eksekusi perintah dan mengambil log, masukkan executionId, Nilai 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 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 jaringan konektivitas dari komputer tempat Anda menjalankan perintah ini.

Solusi: Ikuti panduan yang ditampilkan di Menjalankan perintah di lingkungan IP pribadi ini atau gunakan petunjuk yang tersedia di Bagian waktu perintah kubectl habis.