As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Importe a biblioteca psycopg2 para interagir com seu banco AWS Lambda de dados PostgreSQL
Louis Hourcade, Amazon Web Services
Resumo
O Psycopgpsycopg2 para gravar aplicações em Python que interagem com bancos de dados do PostgreSQL.
Na Amazon Web Services (AWS), os desenvolvedores também usam o AWS Lambda para executar código em aplicações ou em serviços de backend. O Lambda é um serviço de computação orientado a eventos e com tecnologia sem servidor que executa código sem a necessidade de provisionar ou gerenciar servidores.
Por padrão, quando você cria uma nova função que utiliza um runtime do Python com suporte por parte do Lambda, o ambiente de runtime do Lambda é criado com base em uma imagem de base destinada ao Lambdapandas ou psycopg2, não estão incluídas na imagem de base. Para usar uma biblioteca, é necessário empacotá-la em um pacote personalizado e anexá-la ao Lambda.
Existem várias formas de empacotar e anexar uma biblioteca, incluindo:
Implantar sua função do Lambda a partir de um arquivo .zip.
Implantar sua função do Lambda a partir de uma imagem de contêiner personalizada.
Criar uma camada para o Lambda e anexá-la à sua função do Lambda.
Esse padrão demonstra as duas primeiras opções.
Com um pacote de implantação em .zip, adicionar a biblioteca pandas à sua função do Lambda é relativamente simples. Crie uma pasta em sua máquina do Linux, adicione o script do Lambda juntamente com a biblioteca pandas e as respectivas dependências à pasta, realize a compactação da pasta em um arquivo .zip e forneça-o como origem para a função do Lambda.
Embora usar um pacote de implantação em .zip seja uma prática comum, essa abordagem não funciona para a biblioteca psycopg2. Primeiro, este padrão apresenta o erro que ocorre se você tentar adicionar a biblioteca psycopg2 à sua função do Lambda usando um pacote de implantação em .zip. Em seguida, o padrão demonstra como implantar o Lambda usando um Dockerfile e editar a imagem do Lambda para que a biblioteca psycopg2 funcione corretamente.
Para obter informações sobre os três recursos que o padrão implanta, consulte a seção Informações adicionais.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS com permissões suficientes para implantar os AWS recursos usados por esse padrão
AWS Cloud Development Kit (AWS CDK) instalado globalmente executando
npm install -g aws-cdkUm cliente do Git
Python
Docker
Limitações
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte Serviços da AWS by Region
. Para endpoints específicos, consulte a página Cotas e endpoints de serviços e clique no link correspondente ao serviço desejado.
Versões do produto
Versão do runtime do Python compatível com o Lambda
Versão 2.9.3 do Psycopg2
Versão 1.5.2 do Pandas
Arquitetura
Visão geral da solução
Para ilustrar os desafios que você pode enfrentar ao usar a biblioteca psycopg2 no Lambda, o padrão implanta duas funções do Lambda:
Uma função do Lambda com runtime do Python criada com base em um arquivo .zip. As bibliotecas
psycopg2epandassão instaladas nesse pacote de implantação .zip usando pip. Uma função do Lambda com runtime do Python criada com base em um Dockerfile. O Dockerfile instala as bibliotecas
psycopg2epandasna imagem de contêiner do Lambda.
A primeira função do Lambda instala a biblioteca pandas e as respectivas dependências em um arquivo .zip, e o Lambda pode usar essa biblioteca.
A segunda função do Lambda demonstra que, ao criar uma imagem de contêiner para a função do Lambda, você pode executar as bibliotecas pandas e psycopg2 no Lambda.
Ferramentas
Serviços da AWS
O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda a definir e a provisionar a infraestrutura da Nuvem AWS por meio de código.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
Outras ferramentas
O Docker
é um conjunto de produtos de plataforma como serviço (PaaS) que usam a virtualização no nível do sistema operacional para fornecer software em contêineres. O pandas
é uma ferramenta de código aberto baseada em Python para análise e manipulação de dados. O Psycopg
é um adaptador de banco de dados do PostgreSQL para a linguagem Python, projetado para aplicações que usam várias threads. Este padrão usa o Psycopg 2. Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório import-psycopg2
Práticas recomendadas
Esse padrão fornece um exemplo prático de uso AWS CDK para criar uma função Lambda a partir de um Dockerfile. Se você reutilizar esse código em sua aplicação, certifique-se de que os recursos implantados atendam a todos os requisitos de segurança. Empregue ferramentas como o Checkov
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clonar o repositório. | Para clonar o GitHub repositório em sua máquina local, execute os seguintes comandos:
| AWS geral |
Configure sua implantação. | Edite o
| AWS geral |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Inicialize seu. Conta da AWS | Se você ainda não inicializou seu ambiente AWS, execute os seguintes comandos com as AWS credenciais da sua conta: AWS
| AWS geral |
Implante o código. | Para implantar o AWS CDK aplicativo, execute o seguinte comando:
| AWS geral |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Teste a função do Lambda criada usando o arquivo .zip. | Para testar a função do Lambda criada usando o arquivo .zip, execute as seguintes etapas:
Como o Lambda não encontra as bibliotecas do PostgreSQL necessárias na imagem padrão, ele não consegue usar a biblioteca | AWS geral |
Teste a função do Lambda criada usando o Dockerfile. | Para usar a biblioteca Para testar a função do Lambda criada usando o Dockerfile, execute as seguintes etapas:
O código a seguir mostra o Dockerfile que o AWS CDK modelo cria:
O Dockerfile usa a imagem AWS Lambda fornecida para o tempo de execução do Python e instala o postgresql-devel | AWS geral |
Recursos relacionados
Mais informações
Nesse padrão, o AWS CDK modelo fornece uma AWS pilha com três recursos:
Um perfil do AWS Identity and Access Management (IAM) para as funções do Lambda.
Uma função do Lambda com um runtime do Python. A função é implantada usando o pacote de implantação
Constructs/lambda/lambda_deploy.zip.Uma função do Lambda com um runtime do Python. A função é implantada usando o Dockerfile presente na pasta
Constructs.
O script de ambas as funções do Lambda verifica se as bibliotecas pandas e psycopg2 foram importadas com êxito:
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"}
O pacote de implantação lambda_deploy.zip é desenvolvido com o script bash Constructs/lambda/build.sh. Esse script cria uma pasta, copia o script do Lambda, instala as bibliotecas pandas e psycopg2, e gera o arquivo .zip. Para gerar você mesmo o arquivo.zip, execute esse script bash e reimplante a pilha. AWS CDK
O Dockerfile começa com a imagem base AWS fornecida para o Lambda com um tempo de execução do Python. O Dockerfile instala as bibliotecas pandas e psycopg2 na imagem padrão.