Bagaimana cara menghubungkan database postgresql ke s3 bucket?
Pada artikel ini, kami akan menyelesaikan masalah kami dengan metode pertama, "salinan massal menggunakan boto3 dan psycopg2" Show
Singkatnya, kami akan melakukannya
Pro dan Kontra dari metode iniPro
Kontra
Skenario dunia nyataKami akan mencoba solusi kami dalam skenario dunia nyata dengan S3 Event Notifications, AWS Lambda, dan ECS-Fargate skenario salinan massal
Pipa CICDSetiap solusi yang baik layak mendapatkan pipa CICD yang baik. Untuk solusi ini, kami akan membuat pipeline CICD di atas Docker, Github Actions, ECR, dan ECS pipa CICDBuat pengguna IAMPengguna IAM diharuskan untuk dapat membuat dan mengelola sumber daya AWS. Saya tidak akan masuk ke IAM di artikel ini. Anda dapat meneliti secara eksternal apa itu IAM dan bagaimana pengguna dapat dibuat di IAM Jadi, Anda sudah memiliki pengguna IAM (selain pengguna root) Catatan. Sepanjang artikel, saya akan mencoba menggunakan aws cli sebanyak mungkin Buat ember S3Kami dapat dengan mudah membuat bucket S3 kami dengan perintah berikut aws s3api create-bucket --bucket akocukcu-airbnb --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1 Anda dapat dengan mudah mengunggah file ke keranjang ini melalui cli, boto3, atau konsol Buat database PostgreSQL di RDSLayanan seperti RDS dan EC2 “idealnya” terletak di virtual private cloud (VPC). Akses ke mereka dikelola melalui definisi Grup Keamanan Dengan perintah cli ini, database PostgreSQL akan dibuat di RDS aws rds create-db-instance --db-instance-identifier airbnb-db \ _Basis data PostgreSQL di RDSSekarang database kita sudah siap, kita bisa mencoba untuk terhubung psql —-host=airbnb-db.cw3eufo8swwv.eu-central-1.rds.amazonaws.com —-port=5432 —-username={{master_username}} —-password —-dbname=postgres Mari buat database baru alih-alih yang default (postgres) dan gunakan CREATE DATABASE airbnbdb; Saatnya membuat tabel “daftar” yang akan menampung semua detail daftar Buat tabel untuk data listingmelelahkan. D Sebagai praktik terbaik keamanan, kita harus membuat dan menggunakan pengguna khusus (bukan master) CREATE USER {{user_name}} WITH PASSWORD ‘{{password}}’; _Mari terhubung dengan pengguna baru kami psql —-host=airbnb-db.cw3eufo8swwv.eu-central-1.rds.amazonaws.com —-port=5432 —-username={{user_name}} —-password —-dbname=airbnbdb Skrip PythonSekarang tabel kita di RDS dan file di S3 sudah siap, kita bisa melanjutkan dengan skrip python Anda dapat mencapai seluruh skrip dari sini Ada empat fungsi
Bagian paling kritis di sini adalah pernyataan COPY COPY {sql_table} FROM STDIN WITH CSV HEADER DELIMITER AS ‘,’ QUOTE AS ‘\”’ ; _Anda dapat mengelola dan membuat parameter detail salinan seperti pembatas Proyek KontainerUntuk menampung skrip python, kami memerlukan persyaratan. txt dan file Dockerfile. Anda dapat mencapai semua ini dari bawah repo github GitHub - akocukcu/s3-to-rds-postgresql. Menyalin data dari S3 Bucket ke dalam tabel RDS PostgreSQLMenyalin data dari Bucket S3 ke dalam tabel RDS PostgreSQL - GitHub - akocukcu/s3-to-rds-postgresql. Menyalin data dari…github. com Pada titik ini kita dapat dengan mudah membuat image Docker kita dan bahkan menjalankannya sebagai container docker build -t akocukcu/s3-to-rds-postgresql . Seperti yang Anda lihat di skrip python ada 10 parameter berbeda yang berasal dari variabel lingkungan. Kita dapat melewati ini satu per satu atau dengan file env. (Saya lebih suka yang kedua. ) docker run -d --env-file ./env.txt akocukcu/s3-to-rds-postgresql _Jalankan Container-Task di AWS ECSProyek kami bekerja dengan baik di mesin lokal kami. Sekarang, kita bisa menjalankannya di AWS ECS Sekali lagi untuk bekerja dengan AWS ECS dan ECR, kami perlu membuat pengguna, peran, dan kebijakan IAM Ada dua peran yang diperlukan terkait dengan tugas ECS berbasis Fargate
Setelah pembuatan peran, kami dapat dengan mudah membuat klaster ECS kami melalui CLI aws ecs create-cluster —-cluster-name “airbnb-ecs-cluster” _Repositori ECR juga dapat dibuat dengan cara yang sama aws rds create-db-instance --db-instance-identifier airbnb-db \ _0Kami akan mendorong gambar lokal ke repositori ECR yang baru dibuat dengan perintah di bawah ini (Anda harus memiliki konfigurasi izin yang diperlukan secara lokal) aws rds create-db-instance --db-instance-identifier airbnb-db \ _1Gambar kami dipublikasikan di repositori ECR sekarang Karena semuanya sudah siap, mari buat definisi tugas pertama di klaster ECS kita melalui konsol (setelah itu semua definisi tugas (revisi) akan dibuat/diperbarui oleh pipa CICD)
Akhirnya, kita bisa menjalankan tugas Fargate kita
Saya berjanji setelah itu kami akan menjalankan tugas kami secara terprogram. ) Skenario dunia nyataUntuk membangun skenario dunia nyata (yang telah kita bicarakan), kita perlu membuat fungsi cetak biru dari Lambda UI
Dengan konfigurasi ini, setiap kali file diunggah ke S3bucket kami, fungsi ini akan dipicu Untuk menjalankan tugas Fargate, kita perlu memanipulasi kode. Bagaimanapun, ini akan terlihat seperti ini Hal penting di sini adalah mengganti variabel lingkungan S3 FILE PATH dengan kunci acara S3. Dengan melakukan ini, tugas Fargate hanya akan berfungsi untuk file yang diunggah Catatan. Logika utama benar-benar diabstraksikan dalam wadah. Jadi, misalnya, kita dapat dengan mudah menggunakan Airflow ECSOperator dan mengatur prosesnya secara terjadwal. Tapi ini adalah topik artikel yang akan datang. ) Buat pipa CICDSeperti yang saya janjikan di awal, kami menyelesaikan pengembangan kami dengan pipeline CICD sederhana Dengan munculnya Tindakan Github, banyak pengembang dapat membuat saluran pipa CICD sederhana mereka sendiri. Dalam posting ini kita juga akan menggunakan alur kerja Tindakan GitHub (Karena ini sangat mudah) Di dalam. github/alur kerja/aws. yml ada tujuh langkah
Dengan langkah-langkah ini, dalam hal apa pun yang kita inginkan, gambar Docker dan definisi tugas ECS kita akan diperbarui Catatan Jika Anda mendefinisikannya seperti di bawah ini, Anda akan mendapatkan alur kerja yang diinginkan (setelah komit/gabungkan ke cabang utama, jalankan). Bagaimana cara menghubungkan database PostgreSQL di AWS?Masuk ke AWS Management Console dan buka konsol Amazon RDS di https. //menghibur. aws. amazon. com/rds/. . Buka konsol RDS lalu pilih Database untuk menampilkan daftar instans DB Anda Pilih nama instans DB PostgreSQL untuk menampilkan detailnya Pada tab Konektivitas & keamanan, salin titik akhir Bagaimana cara menghubungkan RDS saya ke S3 saya?Topik . Langkah 1. Buat kebijakan IAM untuk peran Amazon RDS Anda Langkah 2. (Opsional) Buat kebijakan IAM untuk bucket Amazon S3 Anda Langkah 3. Buat peran IAM untuk instans DB Anda dan lampirkan kebijakan Anda Langkah 4. Kaitkan peran IAM Anda dengan instans RDS untuk Oracle DB Bagaimana cara terhubung ke database postgres?Jadi, jika pengguna Anda saat ini adalah pengguna PostgreSQL yang valid di basis data lokal Anda, Anda dapat terhubung dengan mengetik. . sudo --login --user=postgres. psql sudo --login --user=postgres psql Bisakah saya menggunakan PostgreSQL dengan AWS?AWS mendukung PostgreSQL melalui layanan database terkelola penuh dengan Amazon Relational Database Service (RDS) . Amazon Aurora dengan kompatibilitas PostgreSQL juga dibangun menggunakan PostgreSQL. |