Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Importa la libreria psycopg2 per interagire con il tuo AWS Lambda database PostgreSQL
Louis Hourcade, Amazon Web Services
Riepilogo
Psycopgpsycopg2 libreria per scrivere applicazioni Python che interagiscono con i database PostgreSQL.
Su Amazon Web Services (AWS), gli sviluppatori lo utilizzano anche AWS Lambdaper eseguire codice per applicazioni o servizi di backend. Lambda è un servizio di elaborazione senza server e basato sugli eventi che esegue codice senza la necessità di fornire o gestire server.
Per impostazione predefinita, quando crei una nuova funzione che utilizza un runtime Python (versione 3.9, 3.8 o 3.7), l'ambiente di runtime Lambda viene creato da un'immagine di base per Lambda fornita da.pandas opsycopg2, non sono incluse nell'immagine di base. Per utilizzare una libreria, devi raggrupparla in un pacchetto personalizzato e collegarla a Lambda.
Esistono diversi modi per raggruppare e collegare una libreria, inclusi i seguenti:
Implementa la tua funzione Lambda da un archivio di file.zip.
Implementa la tua funzione Lambda da un'immagine contenitore personalizzata.
Crea un layer Lambda e collegalo alla tua funzione Lambda.
Questo modello illustra le prime due opzioni.
Con un pacchetto di distribuzione.zip, aggiungere la pandas libreria alla funzione Lambda è relativamente semplice. Crea una cartella sulla tua macchina Linux, aggiungi lo script Lambda insieme alla pandas libreria e alle dipendenze della libreria alla cartella, comprimi la cartella e forniscila come sorgente per la tua funzione Lambda.
Sebbene l'utilizzo di un pacchetto di distribuzione.zip sia una pratica comune, questo approccio non funziona per la libreria. psycopg2 Questo modello mostra innanzitutto l'errore che si ottiene se si utilizza un pacchetto di distribuzione.zip per aggiungere la psycopg2 libreria alla funzione Lambda. Il modello mostra quindi come distribuire Lambda da un Dockerfile e modificare l'immagine Lambda per far funzionare la libreria. psycopg2
Prerequisiti e limitazioni
Prerequisiti
Un attivo Account AWS con autorizzazioni sufficienti per distribuire le AWS risorse utilizzate da questo modello
AWS Cloud Development Kit (AWS CDK) installato a livello globale eseguendo
npm install -g aws-cdkUn client Git
Python
Docker
Limitazioni
Alcune Servizi AWS non sono disponibili in tutte Regioni AWS. Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta la pagina Endpoint e quote del servizio e scegli il link relativo al servizio.
Versioni del prodotto
Versione runtime di AWS Lambda: Python 3.8 (il modello può essere adattato per altre versioni di Python).
Psycopg2 versione 2.9.3
Pandas versione 1.5.2
Architettura
Panoramica della soluzione
Per illustrare le sfide che potresti dover affrontare quando utilizzi la psycopg2 libreria in Lambda, il pattern implementa due funzioni Lambda:
Una funzione Lambda con il runtime Python 3.8 creata da un file.zip. Le
pandaslibreriepsycopg2and vengono installate in questo pacchetto di distribuzione.zip utilizzando pip.Una funzione Lambda con il runtime Python 3.8 creata da un Dockerfile. Il Dockerfile installa le
pandaslibreriepsycopg2and nell'immagine del contenitore Lambda.
La prima funzione Lambda installa la pandas libreria e le sue dipendenze in un file.zip e Lambda può utilizzare tale libreria.
La seconda funzione Lambda dimostra che, creando un'immagine contenitore per la funzione Lambda, è possibile eseguire le librerie and pandas in Lambda. psycopg2
Strumenti
Servizi AWS
AWS Cloud Development Kit (AWS CDK)è un framework di sviluppo software che ti aiuta a definire e fornire l'infrastruttura cloud AWS in codice.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Altri strumenti
Docker
è un insieme di prodotti Platform as a Service (PaaS) che utilizzano la virtualizzazione a livello di sistema operativo per fornire software in container. pandas
è uno strumento open source basato su Python per l'analisi e la manipolazione dei dati. Psycopg
è un adattatore di database PostgreSQL per il linguaggio Python progettato per applicazioni multithread. Questo modello utilizza Psycopg 2. Python
è un linguaggio di programmazione per computer generico.
Archivio di codice
Il codice per questo pattern è disponibile nel repository import-psycopg2
Best practice
Questo modello fornisce un esempio funzionante di utilizzo AWS CDK per creare una funzione Lambda da un Dockerfile. Se riutilizzi questo codice nella tua applicazione, assicurati che le risorse distribuite soddisfino tutti i requisiti di sicurezza. Utilizza strumenti come Checkov
Epiche
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Clonare il repository. | Per clonare il GitHub repository sul computer locale, esegui i seguenti comandi:
| Informazioni generali su AWS |
Configura la tua distribuzione. | Modifica il
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Bootstrap il tuo. Account AWS | Se non hai ancora avviato il tuo ambiente AWS, esegui i seguenti comandi con le AWS credenziali del tuo account: AWS
| Informazioni generali su AWS |
Distribuisci il codice. | Per distribuire l' AWS CDK applicazione, esegui il comando seguente:
| Informazioni generali su AWS |
| Attività | Descrizione | Competenze richieste |
|---|---|---|
Prova la funzione Lambda creata dal file.zip. | Per testare la funzione Lambda creata dal file.zip, procedi come segue:
Poiché Lambda non trova le librerie PostgreSQL richieste nell'immagine predefinita, non può utilizzare la libreria. | Informazioni generali su AWS |
Prova la funzione Lambda creata dal Dockerfile. | Per utilizzare la Per testare la funzione Lambda creata dal Dockerfile, procedi come segue:
Il codice seguente mostra il Dockerfile creato dal AWS CDK modello:
Il Dockerfile prende l'immagine AWS Lambda fornita per il runtime di Python 3.8 e installa postgresql-devel, che contiene le librerie necessarie per compilare applicazioni che interagiscono direttamente con il server di gestione PostgreSQL | Informazioni generali su AWS |
Risorse correlate
Informazioni aggiuntive
In questo modello, il AWS CDK modello fornisce uno AWS stack con tre risorse:
Un ruolo AWS Identity and Access Management (IAM) per le funzioni Lambda.
Una funzione Lambda con un runtime Python 3.8. La funzione viene distribuita dal pacchetto di distribuzione.
Constructs/lambda/lambda_deploy.zipUna funzione Lambda con un runtime Python 3.8. La funzione viene distribuita dal Dockerfile nella cartella
Constructs
Lo script per entrambe le funzioni Lambda verifica se le psycopg2 librerie pandas and sono state importate correttamente:
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"}
Il pacchetto lambda_deploy.zip di distribuzione è creato con lo script Constructs/lambda/build.sh bash. Questo script crea una cartella, copia lo script Lambda, installa le psycopg2 librerie pandas and e genera il file.zip. Per generare tu stesso il file.zip, esegui questo script bash e ridistribuisci lo stack. AWS CDK
Il Dockerfile inizia con l'immagine di base AWS fornita per Lambda con un runtime Python 3.8. Il Dockerfile installa le librerie pandas and psycopg2 sopra l'immagine predefinita.