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:
- Clique no botão Criar uma nova Camada;
- No campo Nome, defina um nome para sua camada, ela não deve conter espaços nem caracteres especiais;
- No campo descrição, defina o motivo dessa camada existir, por exemplo;
- 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;
- Em arquitetura recomendo deixar em x86_64, mas isso tem que ser compatível com a sua Lambda também;
- Na lista de Tempos de Execução, selecione quais linguagens e suas respectivas versões que a biblioteca importada vai funcionar;
- 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.
- Acesse o painel de funções da AWS Lambda;
- Clique no botão Criar função;
- Selecione a opção Criar do Zero;
- Insira o nome da sua função;
- Em tempo de execução selecione a linguagem e sua versão a ser utilizada;
- Selecione a arquitetura, note que aqui devemos usar o mesmo valor que a camada na qual vamos importar;
- 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.
- Selecione a opção Camadas personalizadas;
- Na listagem de Camadas em “Camadas personalizadas”, selecione a Camada que você criou anteriormente;
- Na versão, escolha a última versão disponível;
- 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.