Como instalar módulos do Python na AWS Lambda usando Camadas

Ao importar módulos para as camadas, podemos utilizar diferentes bibliotecas de terceiros de forma rápida e prática.

 Escrevendo testes automatizados com PHPUnit

Lambda é um serviço Serverless oferecido pela AWS, com ele podemos executar diferentes scripts a qualquer momento sem a necessidade de termos um servidor alocado 24/7, o que diminui muito os custos.

Algumas bibliotecas, como, por exemplo, o requests do Python, requer uma instalação via Pip para funcionar, algo que não conseguimos executar no painel das Lambdas. Podemos fazer a instalação localmente juntamente com nossos scripts e fazer o upload via .zip, porém, dependendo do tamanho do Bundle, não vamos conseguir editar e testar o código pelo painel.

Outra opção é utilizar camadas, que basicamente é subirmos os pacotes que desejamos utilizar sem a necessidade de importar o .zip para o projeto principal das Lambdas. Essa é a opção que vamos seguir aqui.

Uma observação antes de iniciarmos nosso artigo: Vamos fazer os exemplos utilizando o Python pela praticidade, mas a funcionalidade é a mesma para outras linguagens, como Node JS, por exemplo.

Instalando a Request do Python

Com o Python instalado, crie uma pasta em um diretório seguro, em seguida, abra o terminal dentro dessa pasta e rode o comando abaixo.

pip install requests -t .

O comando acima vai baixar o pacote de arquivos requests dentro da pasta atual, contendo tudo o que a gente precisa. Agora compacte a pasta que você acabou de criar no formato .zip.

Criando uma nova camada na AWS Lambda

Acesse o painel da Lambda na AWS, em seguida, clique na opção Camadas no menu lateral esquerdo. siga os passos abaixo para criar a camada:

 

  1. Clique no botão Criar uma nova Camada;
  2. No campo Nome, defina um nome para sua camada, ela não deve conter espaços nem caracteres especiais;
  3. No campo descrição, defina o motivo dessa camada existir, por exemplo;
  4. Com a opção “Fazer upload de um arquivo .zip” selecionada, clique no botão Fazer Upload e selecione a pasta que você compactou com os arquivos da Requests;
  5. Em arquitetura recomendo deixar em x86_64, mas isso tem que ser compatível com a sua Lambda também;
  6. Na lista de Tempos de Execução, selecione quais linguagens e suas respectivas versões que a biblioteca importada vai funcionar;
  7. Por fim, clique no botão Criar.

Criando uma função Lambda

Agora que já temos nossa camada criada, vamos criar uma nova função Lambda, para isso, siga os passos abaixo.

  1. Acesse o painel de funções da AWS Lambda;
  2. Clique no botão Criar função;
  3. Selecione a opção Criar do Zero;
  4. Insira o nome da sua função;
  5. Em tempo de execução selecione a linguagem e sua versão a ser utilizada;
  6. Selecione a arquitetura, note que aqui devemos usar o mesmo valor que a camada na qual vamos importar;
  7. Por fim, clique em Criar função.

Associando uma Camada a uma função Lambda

Estamos na reta final do nosso artigo, agora só nos resta associar a Camada criada anteriormente a nossa função Lambda, para isso, na página da sua nova função Lambda, role até o final da página e clique no botão Adicionar uma nova Camada.

  1. Selecione a opção Camadas personalizadas;
  2. Na listagem de Camadas em “Camadas personalizadas”, selecione a Camada que você criou anteriormente;
  3. Na versão, escolha a última versão disponível;
  4. Por fim, clique no botão Adicionar.

Testes finais

Agora as suas bibliotecas já estão disponíveis através das Camadas. Vamos rodar o script abaixo para exemplificar nosso teste.

import requests

def lambda_handler(event, context):
    x = requests.get('https://w3schools.com/python/demopage.htm')
    
    print(x.text)

Videoaula de AWS Lambda e Camadas

Caso tenha ficado com alguma dúvida, confira nossa videoaula através do player abaixo.