Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Impor pustaka psycopg2 AWS Lambda untuk berinteraksi dengan database PostgreSQL Anda
Louis Hourcade, Amazon Web Services
Ringkasan
Psycopg adalah adaptor databasepsycopg2 perpustakaan untuk menulis aplikasi Python yang berinteraksi dengan database PostgreSQL.
Di Amazon Web Services (AWS), pengembang juga menggunakan AWS Lambdauntuk menjalankan kode untuk aplikasi atau layanan backend. Lambda adalah layanan komputasi tanpa server yang digerakkan oleh peristiwa yang menjalankan kode tanpa perlu menyediakan atau mengelola server.
Secara default, saat Anda membuat fungsi baru yang menggunakan runtime Python (versi 3.9, 3.8, atau 3.7), lingkungan runtime Lambda dibuat dari gambar dasar untuk Lambda yang disediakan oleh.pandas ataupsycopg2, tidak termasuk dalam gambar dasar. Untuk menggunakan perpustakaan, Anda perlu menggabungkannya dalam paket khusus dan melampirkannya ke Lambda.
Ada beberapa cara untuk menggabungkan dan melampirkan perpustakaan, termasuk yang berikut:
Terapkan fungsi Lambda Anda dari arsip file.zip.
Terapkan fungsi Lambda Anda dari gambar kontainer khusus.
Buat layer Lambda, dan lampirkan ke fungsi Lambda Anda.
Pola ini menunjukkan dua opsi pertama.
Dengan paket penyebaran.zip, menambahkan pandas pustaka ke fungsi Lambda Anda relatif mudah. Buat folder di mesin Linux Anda, tambahkan skrip Lambda bersama dengan pandas perpustakaan dan dependensi perpustakaan ke folder, zip folder, dan sediakan sebagai sumber untuk fungsi Lambda Anda.
Meskipun menggunakan paket penyebaran.zip adalah praktik umum, pendekatan itu tidak berfungsi untuk perpustakaan. psycopg2 Pola ini pertama-tama menunjukkan kesalahan yang Anda dapatkan jika Anda menggunakan paket penyebaran .zip untuk menambahkan psycopg2 pustaka ke fungsi Lambda Anda. Pola kemudian menunjukkan cara menerapkan Lambda dari Dockerfile dan mengedit gambar Lambda untuk membuat perpustakaan berfungsi. psycopg2
Untuk informasi tentang tiga sumber daya yang diterapkan pola, lihat bagian Informasi tambahan.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS dengan izin yang cukup untuk menyebarkan AWS sumber daya yang digunakan oleh pola ini
AWS Cloud Development Kit (AWS CDK) diinstal secara global dengan menjalankan
npm install -g aws-cdkKlien Git
Python
Docker
Keterbatasan
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat halaman titik akhir dan kuota Layanan, dan pilih tautan untuk layanan.
Versi produk
Versi runtime AWS Lambda: Python 3.8 (Pola dapat disesuaikan untuk versi Python lainnya.)
Psycopg2 versi 2.9.3
Pandas versi 1.5.2
Arsitektur
Ikhtisar solusi
Untuk mengilustrasikan tantangan yang mungkin Anda hadapi saat menggunakan psycopg2 pustaka di Lambda, pola tersebut menerapkan dua fungsi Lambda:
Satu fungsi Lambda dengan runtime Python 3.8 dibuat dari file.zip.
pandasPustakapsycopg2dan diinstal dalam paket penyebaran.zip ini dengan menggunakan pip.Satu fungsi Lambda dengan runtime Python 3.8 dibuat dari Dockerfile. Dockerfile menginstal
psycopg2danpandaspustaka ke dalam gambar kontainer Lambda.
Fungsi Lambda pertama menginstal pandas perpustakaan dan dependensinya dalam file.zip, dan Lambda dapat menggunakan pustaka itu.
Fungsi Lambda kedua menunjukkan bahwa dengan membangun gambar kontainer untuk fungsi Lambda Anda, Anda dapat menjalankan dan pandas perpustakaan di Lambda. psycopg2
Alat
Layanan AWS
AWS Cloud Development Kit (AWS CDK)adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Alat-alat lainnya
Docker
adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah. panda
adalah alat open source berbasis Python untuk analisis dan manipulasi data. Psycopg
adalah adaptor database PostgreSQL untuk bahasa Python yang dirancang untuk aplikasi multithreaded. Pola ini menggunakan Psycopg 2. Python adalah bahasa
pemrograman komputer tujuan umum.
Repositori kode
Kode untuk pola ini tersedia di impor-psycopg2
Praktik terbaik
Pola ini memberi Anda contoh kerja penggunaan AWS CDK untuk membuat fungsi Lambda dari Dockerfile. Jika Anda menggunakan kembali kode ini dalam aplikasi Anda, pastikan bahwa sumber daya yang digunakan memenuhi semua persyaratan keamanan. Gunakan alat seperti Checkov
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. | Untuk mengkloning GitHub repositori pada mesin lokal Anda, jalankan perintah berikut:
| AWS Umum |
Konfigurasikan penerapan Anda. | Edit
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Bootstrap Anda Akun AWS. | Jika Anda belum mem-bootstrap lingkungan AWS Anda, jalankan perintah berikut dengan AWS kredensyal akun Anda: AWS
| AWS Umum |
Menyebarkan kode. | Untuk menyebarkan AWS CDK aplikasi, jalankan perintah berikut:
| AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Uji fungsi Lambda yang dibuat dari file.zip. | Untuk menguji fungsi Lambda yang dibuat dari file.zip, lakukan hal berikut:
Karena Lambda tidak menemukan pustaka PostgreSQL yang diperlukan dalam gambar default, Lambda tidak dapat menggunakan pustaka. | AWS Umum |
Uji fungsi Lambda yang dibuat dari Dockerfile. | Untuk menggunakan Untuk menguji fungsi Lambda yang dibuat dari Dockerfile, lakukan hal berikut:
Kode berikut menunjukkan Dockerfile yang dibuat AWS CDK template:
Dockerfile mengambil gambar AWS Lambda yang disediakan untuk runtime Python 3.8 dan menginstal postgresql-devel | AWS Umum |
Sumber daya terkait
Informasi tambahan
Dalam pola ini, AWS CDK template menyediakan AWS tumpukan dengan tiga sumber daya:
Peran AWS Identity and Access Management (IAM) untuk fungsi Lambda.
Fungsi Lambda dengan runtime Python 3.8. Fungsi ini digunakan dari paket
Constructs/lambda/lambda_deploy.zippenyebaran.Fungsi Lambda dengan runtime Python 3.8. Fungsi ini digunakan dari Dockerfile di bawah folder
Constructs
Skrip untuk kedua fungsi Lambda memeriksa apakah psycopg2 pustaka pandas dan pustaka berhasil diimpor:
import pandas print("pandas successfully imported") import psycopg2 print("psycopg2 successfully imported") def handler(event, context): """Function that checks whether psycopg2 and pandas are successfully imported or not""" return {"Status": "psycopg2 and pandas successfully imported"}
Paket lambda_deploy.zip penerapan dibangun dengan skrip Constructs/lambda/build.sh bash. Skrip ini membuat folder, menyalin skrip Lambda, menginstal pandas dan psycopg2 perpustakaan, dan menghasilkan file.zip. Untuk membuat file.zip sendiri, jalankan skrip bash ini dan gunakan kembali tumpukan. AWS CDK
Dockerfile dimulai dengan image dasar yang AWS disediakan untuk Lambda dengan runtime Python 3.8. Dockerfile menginstal pandas dan psycopg2 pustaka di atas gambar default.