Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengatur pipeline ETL dengan validasi, transformasi, dan partisi menggunakan AWS Step Functions
Sandip Gangapadhyay, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara membuat pipeline ekstrak, transformasi, dan beban (ETL) tanpa server untuk memvalidasi, mengubah, mengompres, dan mempartisi kumpulan data CSV besar untuk kinerja dan pengoptimalan biaya. Pipeline diatur oleh AWS Step Functions dan mencakup penanganan kesalahan, coba ulang otomatis, dan fitur notifikasi pengguna.
Saat file CSV diunggah ke folder sumber bucket Amazon Simple Storage Service (Amazon S3), pipeline ETL mulai berjalan. Pipeline memvalidasi konten dan skema file CSV sumber, mengubah file CSV menjadi format Apache Parquet terkompresi, mempartisi kumpulan data berdasarkan tahun, bulan, dan hari, dan menyimpannya dalam folder terpisah untuk diproses alat analitik.
Kode yang mengotomatiskan pola ini tersedia di GitHub, di ETL Pipeline dengan AWS Step Functions
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi dengan Anda Akun AWS, sehingga Anda dapat membuat AWS sumber daya dengan menerapkan AWS CloudFormation tumpukan. Kami merekomendasikan menggunakan AWS CLI versi 2. Untuk petunjuk, lihat Menginstal atau memperbarui ke versi terbaru dari AWS CLI dokumentasi. AWS CLI Untuk petunjuk konfigurasi, lihat Pengaturan konfigurasi dan file kredensi dalam AWS CLI dokumentasi.
Bucket Amazon S3.
Dataset CSV dengan skema yang benar. (Repositori kode
yang disertakan dengan pola ini menyediakan contoh file CSV dengan skema dan tipe data yang benar yang dapat Anda gunakan.) Browser web yang mendukung AWS Management Console. (Lihat daftar browser yang didukung
.) AWS Glue akses konsol.
AWS Step Functions akses konsol.
Batasan
Dalam AWS Step Functions, batas maksimum untuk menyimpan catatan riwayat adalah 90 hari. Untuk informasi selengkapnya, lihat kuota layanan Step Functions dalam AWS Step Functions dokumentasi.
Versi produk
Python 3.13 untuk AWS Lambda
AWS Glue versi 4.0
Arsitektur

Alur kerja yang diilustrasikan dalam diagram terdiri dari langkah-langkah tingkat tinggi ini:
Pengguna mengunggah file CSV ke folder sumber di Amazon S3.
Peristiwa notifikasi Amazon S3 memulai AWS Lambda fungsi yang memulai mesin status. AWS Step Functions
Fungsi Lambda memvalidasi skema dan tipe data dari file CSV mentah.
Tergantung pada hasil validasi:
Jika validasi file sumber berhasil, file pindah ke folder tahap untuk diproses lebih lanjut.
Jika validasi gagal, file pindah ke folder kesalahan, dan pemberitahuan kesalahan dikirim melalui Amazon Simple Notification Service (Amazon SNS).
AWS Glue Crawler membuat skema file mentah dari folder panggung di Amazon S3.
AWS Glue Pekerjaan mengubah, mengompres, dan mempartisi file mentah ke dalam format Parket.
AWS Glue Pekerjaan juga memindahkan file ke folder transformasi di Amazon S3.
AWS Glue Crawler membuat skema dari file yang diubah. Skema yang dihasilkan dapat digunakan oleh pekerjaan analitik apa pun. Anda juga dapat menggunakan Amazon Athena untuk menjalankan kueri ad-hoc.
Jika pipeline selesai tanpa kesalahan, file skema dipindahkan ke folder arsip. Jika ada kesalahan yang ditemui, file dipindahkan ke folder kesalahan sebagai gantinya.
Amazon SNS mengirimkan notifikasi yang menunjukkan keberhasilan atau kegagalan berdasarkan status penyelesaian pipeline.
Semua AWS sumber daya yang digunakan dalam pola ini tanpa server. Tidak ada server untuk dikelola.
Alat
Layanan AWS
AWS Glue
— AWS Glue adalah layanan ETL yang dikelola sepenuhnya yang memudahkan pelanggan untuk menyiapkan dan memuat data mereka untuk analitik. AWS Step Functions
- AWS Step Functions adalah layanan orkestrasi tanpa server yang memungkinkan Anda menggabungkan AWS Lambda fungsi dan lainnya Layanan AWS untuk membangun aplikasi bisnis yang penting. Melalui konsol AWS Step Functions grafis, Anda melihat alur kerja aplikasi Anda sebagai serangkaian langkah berbasis peristiwa. Amazon S3 — Amazon Simple Storage
Service (Amazon S3) Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja terdepan di industri. Amazon SNS
— Amazon Simple Notification Service (Amazon SNS) adalah layanan pesan yang sangat tersedia, tahan lama, aman, dan pub/sub terkelola sepenuhnya yang memungkinkan Anda memisahkan layanan mikro, sistem terdistribusi, dan aplikasi tanpa server. AWS Lambda
— AWS Lambda adalah layanan komputasi yang memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. AWS Lambda menjalankan kode Anda hanya bila diperlukan dan menskalakan secara otomatis, dari beberapa permintaan per hari hingga ribuan per detik.
Kode
Kode untuk pola ini tersedia di GitHub, di ETL Pipeline dengan AWS Step Functions
template.yml— AWS CloudFormation template untuk membuat pipa ETL dengan AWS Step Functions.parameter.json- Berisi semua parameter dan nilai parameter. Anda memperbarui file ini untuk mengubah nilai parameter, seperti yang dijelaskan di bagian Epik.myLayer/pythonfolder - Berisi paket Python yang diperlukan untuk membuat AWS Lambda lapisan yang diperlukan untuk proyek ini.lambdafolder - Berisi fungsi Lambda berikut:move_file.py— Memindahkan kumpulan data sumber ke folder arsip, transformasi, atau kesalahan.check_crawler.py— Memeriksa status AWS Glue crawler sebanyak yang dikonfigurasi oleh variabelRETRYLIMITlingkungan sebelum mengirim pesan kegagalan.start_crawler.py— Memulai AWS Glue crawler.start_step_function.py— Mulai AWS Step Functions.start_codebuild.pyMemulai AWS CodeBuild proyek.validation.py— Memvalidasi dataset mentah input.s3object.py— Membuat struktur direktori yang diperlukan di dalam bucket Amazon S3.notification.py— Mengirim pemberitahuan sukses atau kesalahan di akhir pipeline.
Untuk menggunakan kode sampel, ikuti instruksi di bagian Epik.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori kode sampel. |
| Developer |
Perbarui nilai parameter. | Dalam salinan lokal repositori Anda, edit
| Developer |
Unggah kode sumber ke bucket Amazon S3. | Sebelum Anda menerapkan AWS CloudFormation template yang mengotomatiskan pipeline ETL, Anda harus mengemas file sumber untuk template dan mengunggahnya ke bucket Amazon S3. Untuk melakukan ini, jalankan AWS CLI perintah berikut dengan profil Anda yang telah dikonfigurasi sebelumnya:
di mana:
| Developer |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan CloudFormation template. | Untuk menyebarkan AWS CloudFormation template, jalankan AWS CLI perintah berikut:
di mana:
| Developer |
Periksa kemajuan. | Di AWS CloudFormation konsol | Developer |
Perhatikan nama AWS Glue database. | Tab Output untuk tumpukan menampilkan nama AWS Glue database. Nama kunci tersebut adalah | Developer |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Mulai pipa ETL. |
| Developer |
Periksa dataset yang dipartisi. | Saat pipeline ETL selesai, verifikasi bahwa kumpulan data yang dipartisi tersedia di folder transformasi Amazon S3 ( | Developer |
Periksa database yang dipartisi. AWS Glue |
| Developer |
Jalankan kueri. | (Opsional) Gunakan Amazon Athena untuk menjalankan kueri ad-hoc pada database yang dipartisi dan diubah. Untuk petunjuk, lihat Menjalankan kueri SQL di Amazon Athena dalam dokumentasi. AWS | Analis basis data |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
AWS Identity and Access Management (IAM) izin untuk AWS Glue pekerjaan dan crawler | Jika Anda lebih lanjut menyesuaikan AWS Glue pekerjaan atau crawler, pastikan untuk memberikan izin IAM yang sesuai dalam peran IAM yang digunakan oleh AWS Glue pekerjaan, atau memberikan izin data ke. AWS Lake Formation Lihat informasi yang lebih lengkap dalam dokumentasi AWS. |
Sumber daya terkait
Layanan AWS dokumentasi
Informasi tambahan
Diagram berikut menunjukkan AWS Step Functions alur kerja untuk pipeline ETL yang sukses, dari panel Inspector AWS Step Functions .

Diagram berikut menunjukkan AWS Step Functions alur kerja untuk pipeline ETL yang gagal karena kesalahan validasi input, dari panel Step Functions Inspector.
