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 operasi dan tugas DAG, menambahkan serta 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 referensi gcloud composer environments run
.
Sebelum memulai
Anda harus memiliki izin yang memadai untuk menggunakan alat command line
gcloud
dengan Cloud Composer dan menjalankan perintah CLI Airflow. Untuk mengetahui informasi selengkapnya, lihat kontrol akses.Pada Cloud Composer versi sebelum 2.4.0, Anda memerlukan akses ke bidang kontrol cluster lingkungan 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 Airflow CLI 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.
- 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:
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 Cloud Composer versi 2.4.0, Anda dapat menjalankan perintah CLI Airflow di lingkungan IP pribadi tanpa konfigurasi tambahan. Mesin Anda tidak memerlukan akses ke endpoint bidang 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 yang tersedia dapat bervariasi, bergantung pada konfigurasi cluster pribadi Anda.
Jika akses endpoint publik dinonaktifkan di cluster lingkungan Anda, Anda tidak dapat menggunakan perintah gcloud composer
untuk menjalankan Airflow CLI.
Agar dapat menjalankan perintah CLI Airflow, lakukan langkah-langkah berikut:
- Membuat VM di jaringan VPC Anda
- 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 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 di lingkungan Anda.
Menjalankan perintah CLI Airflow 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 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, sepertidags
.AIRFLOW_SUBCOMMAND
: Sub-perintah untuk perintah CLI Airflow yang ingin Anda jalankan, sepertilist
.- (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 permintaan PollAirflowCommand dan memeriksa kolom di exitInfo
untuk menemukan kode status dan error. 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 ditampilkan di bagian
Menjalankan perintah di lingkungan IP pribadi
atau gunakan petunjuk yang tersedia di bagian
Waktu tunggu perintah kubectl
habis.