Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Halaman ini menjelaskan cara menyimpan dan memuat status lingkungan Anda menggunakan snapshot lingkungan.
Anda dapat mengonfigurasi lingkungan untuk menyimpan snapshot secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi snapshot terjadwal.
Tentang snapshot lingkungan
Snapshot lingkungan menyimpan status lingkungan Anda. Anda dapat menyimpan dan memuat snapshot lingkungan sesuai permintaan.
Anda dapat menggunakan snapshot untuk:
Memulihkan lingkungan Anda ke status sebelumnya. Membuat cadangan lingkungan Anda menggunakan snapshot, lalu memuat salah satu snapshot untuk memulihkan lingkungan Anda. Misalnya, Anda dapat mengembalikan operasi update yang menginstal paket PyPI atau mengganti opsi konfigurasi Airflow, bahkan setelah lingkungan Anda berhasil diupdate.
Melakukan upgrade berdampingan dan menyalin lingkungan. Buat snapshot lingkungan yang ada, buat lingkungan baru yang menggunakan versi Managed Airflow yang sama atau lebih baru, lalu terapkan snapshot ke lingkungan baru ini. Prosedur ini mirip dengan migrasi. Pastikan untuk menjeda DAG sebelum membuat snapshot, guna menghindari duplikasi DAG yang berjalan.
Memigrasikan lingkungan Anda ke Managed Airflow (Gen 3).
Cara snapshot disimpan
Snapshot lingkungan adalah sekumpulan file yang menjelaskan status lingkungan Anda dan menyimpan cadangan data lingkungan.
Anda dapat membuat beberapa snapshot lingkungan Anda. Snapshot lingkungan bersifat non-inkremental. Anda dapat menggunakan snapshot apa pun secara independen dari snapshot lainnya.
Managed Airflow tidak menghapus snapshot saat Anda menghapus lingkungan.
Secara default, Managed Airflow menyimpan snapshot di folder snapshots/ di bucket lingkungan Anda. Anda juga dapat menentukan lokasi kustom saat membuat snapshot.
Meskipun UI Cloud Storage menampilkan data sebagai folder untuk kemudahan, bucket berfungsi dalam struktur file datar. Hal ini tidak mengubah cara Anda bekerja dengan menyimpan dan memuat snapshot di Google Cloud konsol, tetapi perlu diingat saat Anda melakukan operasi langsung pada file di bucket Anda. Untuk mengetahui informasi selengkapnya, lihat Namespace objek.
Pertimbangan keamanan untuk snapshot
Untuk mengurangi risiko keamanan ini, Anda dapat menyimpan informasi sensitif yang digunakan oleh DAG Airflow, seperti kunci atau sandi, di Secret Manager. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Secret Manager untuk lingkungan Anda.
Pastikan untuk memeriksa izin keamanan untuk bucket lingkungan Anda. Jika Anda menyimpan snapshot lingkungan di bucket kustom, pastikan bahwa izin akses untuk bucket tersebut dikonfigurasi dengan benar di project Anda. Saat menetapkan izin, pastikan akun layanan lingkungan memiliki izin yang cukup untuk menyimpan dan memuat snapshot dari bucket.
Data yang disimpan dalam snapshot
Managed Airflow menyimpan data berikut dalam snapshot:
- Penggantian konfigurasi Airflow.
- Variabel lingkungan.
- Daftar paket PyPI kustom, sebagai persyaratan.
- Cadangan database Airflow, termasuk status tugas yang dijalankan, dan histori DAG yang berjalan.
- Cadangan folder
/dags,/data, dan/pluginsdari bucket lingkungan. - Kunci fernet lingkungan.
- Informasi lain tentang konfigurasi lingkungan, seperti parameter skala dan performa lingkungan. Managed Airflow tidak menggunakan informasi ini saat memuat snapshot.
Data yang dimuat dari snapshot
Managed Airflow memuat data berikut dari snapshot:
- Penggantian konfigurasi Airflow.
- Variabel lingkungan.
Paket PyPI kustom (kecuali jika Anda memilih untuk melewati penginstalannya).
Konten database Airflow, termasuk status tugas yang dijalankan, dan histori DAG yang berjalan.
Konten folder
/dags,/data, dan/pluginsdari snapshot dimuat ke dalam bucket lingkungan.Kunci fernet dari snapshot digunakan untuk mengenkripsi ulang data dari snapshot dengan kunci fernet lingkungan itu sendiri. Kunci fernet lingkungan tetap tidak berubah.
Meskipun Managed Airflow menyimpan beberapa informasi tentang konfigurasi lingkungan dalam snapshot, informasi tersebut tidak digunakan saat memuat snapshot. Parameter lingkungan Anda berikut tidak berubah saat Anda memuat snapshot:
- Konfigurasi lingkungan, seperti parameter skala dan performa lingkungan.
- Konfigurasi jaringan lingkungan.
- Konten bucket lingkungan di luar folder
/dags,/data, dan/plugins. - Label lingkungan.
Setelan apa pun yang Anda terapkan di infrastruktur Managed Airflow tanpa menggunakan Cloud Composer API mungkin akan hilang saat Anda memuat snapshot.
Tentang operasi yang selesai sebagian
Saat Anda memuat snapshot, operasi dapat berhasil, gagal, atau selesai sebagian:
- Operasi yang berhasil memuat semua data dari snapshot.
- Operasi yang gagal tidak memperkenalkan perubahan apa pun.
- Operasi yang selesai sebagian memuat subset data dari snapshot. Operasi tersebut dilaporkan sebagai gagal, tetapi pesan error menunjukkan data yang berhasil dimuat. Misalnya, jika paket PyPI diinstal, tetapi penggantian opsi konfigurasi Airflow tidak berhasil, pesan error akan menunjukkannya.
Untuk operasi yang selesai sebagian, Anda dapat mencoba memuat snapshot yang sama lagi. Managed Airflow akan melewati langkah-langkah yang berhasil pada percobaan sebelumnya. Misalnya, jika operasi gagal karena waktu tunggu habis, tetapi database berhasil dimuat, percobaan berikutnya tidak akan memuat database lagi.
Sebelum memulai
Snapshot didukung di Managed Airflow (Gen 2) versi 2.0.9 dan yang lebih baru. Managed Airflow (Legacy Gen 1) mendukung penyimpanan snapshot lingkungan di versi 1.18.5 dan yang lebih baru.
Snapshot tidak membuat lingkungan. Jika ingin memuat snapshot dari satu lingkungan ke lingkungan lain, Anda harus membuat lingkungan baru terlebih dahulu, lalu memuat snapshot ke lingkungan tersebut.
Anda tidak dapat memuat snapshot ke lingkungan yang berada dalam status error. Anda tidak dapat memperbaiki lingkungan tersebut dengan memuat snapshot. Anda masih dapat memuat snapshot yang ada ke lingkungan baru.
Anda hanya dapat memuat snapshot ke versi Managed Airflow atau Airflow yang sama atau lebih baru. Misalnya, Anda tidak dapat memuat snapshot dari Managed Airflow 2.8.4 ke lingkungan dengan Managed Airflow 2.8.3. Sebagai contoh lain, Anda tidak dapat memuat snapshot dari Airflow 2.7.3 ke Airflow 2.6.3.
Snapshot tidak mengubah versi Managed Airflow. Jika Anda mengupgrade lingkungan ke versi Managed Airflow yang lebih baru, lalu memuat snapshot dari versi sebelumnya, lingkungan Anda akan tetap menggunakan versi Managed Airflow saat ini. Misalnya, memuat snapshot dari Managed Airflow 2.8.3 ke Managed Airflow 2.8.4 tidak akan mengembalikan lingkungan ke Managed Airflow 2.8.3.
Ukuran maksimum database Airflow yang mendukung snapshot adalah 20 GB. Jika database lingkungan Anda berukuran lebih dari 20 GB, kurangi ukuran database Airflow sebelum menyimpan snapshot.
Jumlah total objek di folder
/dags,/plugins,dan/datadi bucket lingkungan harus kurang dari 100.000 untuk membuat snapshot.Jika Anda menggunakan mekanisme XCom untuk mentransfer file, pastikan Anda menggunakannya sesuai dengan panduan Airflow. Mentransfer file besar atau sejumlah besar file menggunakan XCom akan memengaruhi performa database Airflow dan dapat menyebabkan kegagalan saat memuat snapshot atau mengupgrade lingkungan Anda. Pertimbangkan untuk menggunakan alternatif seperti Cloud Storage untuk mentransfer data dalam jumlah besar.
Panjang maksimum nama objek di bucket lingkungan tidak boleh lebih dari 1.024 simbol. Jika tidak, snapshot tidak dapat dibuat.
Jika Anda menyimpan snapshot di lokasi di luar bucket lingkungan, akun layanan lingkungan Anda harus memiliki izin baca dan tulis untuk lokasi yang ditentukan. Misalnya, peran Storage Object Admin memiliki izin tersebut. Anda dapat menerapkannya ke project atau ke bucket tertentu.
Membuat dan menyimpan snapshot akan menimbulkan biaya tambahan, yang terkait dengan Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Harga.
Menyimpan snapshot lingkungan
Managed Airflow menyimpan snapshot lingkungan di
subfolder, relatif terhadap folder yang Anda tentukan.
Nama folder berisi ID project, lokasi lingkungan, nama lingkungan, dan stempel waktu saat snapshot disimpan. Contoh: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.
Konsol
Untuk membuat snapshot lingkungan Anda:
Di Google Cloud konsol, buka halaman Environments.
Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.
Klik Save snapshot.
Di dialog Save snapshot, pilih tempat untuk menyimpan snapshot:
Untuk menyimpan snapshot di folder
/snapshotsdi bucket lingkungan, pilih Use snapshot folder in environment bucket (default).Untuk menyimpan snapshot di folder kustom, pilih Use custom folder in another bucket, lalu tentukan lokasi.
Klik Save.
gcloud
Perintah gcloud composer environments snapshots save menyimpan snapshot lingkungan Anda.
- Argumen
snapshot-locationmenentukan folder tempat snapshot disimpan. Secara default, snapshot disimpan di folder/snapshotsdi bucket lingkungan Anda. Misalnya,gs://us-central1-example-916807e1-bucket/snapshots. Anda juga dapat menentukan folder lain.
Untuk menyimpan snapshot lingkungan Anda, jalankan:
gcloud composer environments snapshots save \
ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-location "SNAPSHOTS_FOLDER"
Ganti:
ENVIRONMENT_NAMEdengan nama lingkungan.LOCATIONdengan region tempat lingkungan berada.- (Opsional)
SNAPSHOTS_FOLDERdengan URI folder bucket tempat menyimpan snapshot. Jika Anda menghapus argumen ini, Managed Airflow akan menyimpan snapshot di folder/snapshotsdi bucket lingkungan Anda.
Contoh berikut menggunakan lokasi default:
gcloud composer environments snapshots save \
example-environment \
--location us-central1
Contoh berikut menyimpan ke folder kustom:
gcloud composer environments snapshots save \
example-environment \
--location us-central1 \
--snapshot-location "gs://example-bucket/environment_snapshots"
API
Buat permintaan
environments.saveSnapshotAPI.Di isi permintaan, di kolom
snapshotLocation, tentukan folder tempat Anda ingin menyimpan snapshot.
{
"snapshotLocation": "SNAPSHOTS_FOLDER"
}
Ganti:
SNAPSHOTS_FOLDERdengan URI folder bucket tempat menyimpan snapshot.
Contoh:
// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot
{
"snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}
Terraform
Anda tidak dapat menyimpan dan memuat snapshot lingkungan dari Terraform.
Menyimpan dan memuat snapshot adalah tindakan yang dilakukan pada lingkungan, dan snapshot yang dihasilkan bukan merupakan bagian dari definisi lingkungan. Karena Terraform hanya mengelola konfigurasi lingkungan Managed Airflow, Anda tidak dapat menyimpan atau memuat snapshot lingkungan dari Terraform.
Memuat snapshot lingkungan
Pertimbangkan situasi berikut. Misalnya, catch-up diaktifkan dan Airflow menjalankan DAG sesuai jadwal antara waktu snapshot dibuat dan saat snapshot dimuat. Dalam hal ini, setelah Anda memuat snapshot, Airflow tidak memiliki informasi tentang DAG yang berjalan, sehingga Airflow menjalankan DAG lagi untuk waktu dan data yang sama.
Sebagai contoh lain, pertimbangkan DAG yang berjalan sesuai jadwal harian. Anda mengambil snapshot, lalu Airflow menjalankan DAG ini, dan setelah itu Anda memuat snapshot pada hari yang sama. Dalam hal ini, Airflow menjalankan DAG lagi, meskipun catch-up dinonaktifkan.
Konsol
Untuk memuat snapshot ke lingkungan Anda:
Di Google Cloud konsol, buka halaman Environments.
Di daftar lingkungan, klik nama lingkungan Anda. Halaman Environment details akan terbuka.
Klik Load snapshot.
Di dialog Load snapshot, klik Browse.
Pilih folder yang menyimpan snapshot. Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Contoh,
/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.(Opsional) Untuk melewati penginstalan paket PyPI kustom dari snapshot, pilih Skip PyPI packages installation. Jika Anda memuat a snapshot lingkungan dengan paket PyPI kustom yang diinstal , Managed Airflow tidak akan menginstal paket kustom ini.
Klik Load dan tunggu hingga Managed Airflow memuat snapshot.
gcloud
Perintah gcloud composer environments snapshots load memuat snapshot ke lingkungan Anda.
Argumen
--snapshot-pathmenentukan folder tempat snapshot berada.Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Contoh,
gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.(Opsional) Argumen
--skip-pypi-packages-installationmelewati penginstalan paket PyPI kustom dari snapshot. Jika Anda memuat a snapshot lingkungan dengan paket PyPI kustom yang diinstal , Managed Airflow tidak akan menginstal paket kustom ini.
gcloud composer environments snapshots load \
DESTINATION_ENVIRONMENT_NAME \
--location LOCATION \
--snapshot-path "SNAPSHOT_PATH"
Ganti:
DESTINATION_ENVIRONMENT_NAMEdengan nama lingkungan tempat Anda ingin memuat snapshot.LOCATIONdengan region tempat lingkungan berada.SNAPSHOT_PATHdengan URI bucket, diikuti dengan jalur ke snapshot.
Contoh:
gcloud composer environments snapshots load \
example-environment \
--location us-central1 \
--snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"
API
Buat permintaan API
environments.loadSnapshot.Di isi permintaan, di kolom
snapshotPath, tentukan URI bucket, diikuti dengan jalur ke snapshot. Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Contoh,gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.(Opsional) Di isi permintaan, di kolom
skipPypiPackagesInstallation, tentukan apakah Managed Airflow harus melewati penginstalan paket PyPI kustom dari snapshot. Jika Anda memuat a snapshot lingkungan dengan paket PyPI kustom yang diinstal , Managed Airflow tidak akan menginstal paket kustom ini.Kolom ini bersifat opsional. Jika Anda menghapus kolom ini, Managed Airflow akan menginstal paket PyPI dari snapshot.
{
"snapshotPath": "SNAPSHOT_PATH"
}
Ganti:
SNAPSHOT_PATHdengan URI folder bucket tempat menyimpan snapshot.
Contoh:
// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot
{
"snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
"skipPypiPackagesInstallation": "False"
}
Terraform
Anda tidak dapat menyimpan dan memuat snapshot lingkungan menggunakan Terraform.
Menyimpan dan memuat snapshot adalah tindakan yang dilakukan pada lingkungan, dan snapshot yang dihasilkan bukan merupakan bagian dari definisi lingkungan. Karena Terraform hanya mengelola konfigurasi lingkungan Managed Airflow, Anda tidak dapat menyimpan atau memuat snapshot lingkungan dari Terraform.