Serverless utilizando
AWS Lambda + Python
Raffael Tancman
+
Apresentação
Raffael Tancman
@rtancman / fullstack developer / software engineer
https://rtancman.com.br
Atualmente na Resultados Digitais
GruPy
Blumenau
Agenda
O que é o AWS Lambda?
Vamos passar a
lambda...
O que é o AWS Lambda?
O que é o AWS Lambda?
Linguagens Suportadas atualmente (02/2019)
O que é o AWS Lambda?
Estrutura da função no lambda
def handler_name(event, context):� ...� return some_value |
O que é o AWS Lambda?
event
É o parâmetro principal. Neste argumento recebemos os dados de entrada podendo conter dados de uma mensagem recebida no SQS ou de um request repassado pelo API Gateway.
O que é o AWS Lambda?
context
Neste recebemos um objeto LambdaContext. Neste objeto temos informações de invocação deste lambda como a quantidade de memória configurada e o ARN de quem invocou esta função.
AWS Lambda console web
Home do servico
AWS Lambda console web
Opções de criação:
AWS Lambda console web
Mão na massa!�Vamos acessar o console e criar um lambda.�https://console.aws.amazon.com
Video explicando o Console web: https://www.youtube.com/watch?v=Mr2XT_6HPSo
OBS: Como todo serviço na AWS, precisamos de uma role de execução. Este não é nosso foco, mas para se aprofundar veja a documentaçao.
awscli + Lambda
awscli + Lambda
AWS disponibiliza uma interface de linha de comando para interagir com os serviços.
O awscli é feito em Python <3
awscli + Lambda
Instalação
pip install awscli� #validando se o awscli foi instalado corretamente�aws --version �#config precisamos do AWS Access Key ID e Secret Access Key aws configure |
awscli + Lambda
Vamos focar nos principais comandos para manipular um lambda que são eles:
awscli + Lambda
Utilizando pacotes Python + awscli + Lambda
+
+
Utilizando pacotes Python + awscli + Lambda
Utilizando pacotes Python + awscli + Lambda
O pip tem um opção que é o --target ou -t. Esta opção permite passar o caminho onde vão ser criados os arquivos de dependências do nosso projeto.
pip install -r requirements.txt -t PATH_PARA_CRIAR_ARQUIVOS |
Utilizando pacotes Python + awscli + Lambda
Apex.run + Lambda
Apex.run + Lambda
Apex.run + Lambda
Apex.run + Lambda
Principais comandos
Apex.run + Lambda
Mão na massa!
Gist com os comandos executados
Video explicando o Apex.run: https://www.youtube.com/watch?v=PvvlCvfljz0
Pegadinhas Python + Lambda
Pegadinhas Python + Lambda
Um problema comum em utilizar dependências com linguagens dinâmicas é que a algumas bibliotecas fazem wrapper para funções escritas em C e outras funções do SO.
Pegadinhas Python + Lambda
Ou seja, o lambda roda em cima de uma imagem Amazon Linux com isso utilizando o seu SO preferido para instalar dependências podemos ter problemas de compatibilidades ao instalar bibliotecas.
Pegadinhas Python + Lambda
É nessa hora que o Docker entra para nos ajudar!
docker pull amazonlinux |
Pegadinhas Python + Lambda
Ou seja, o ideal para não sofrer com esse tipo de problema e realizar a instalação em um container que tenha o Amazon Linux AMI.
No hub docker temos acesso a essa imagem oficial que você pode encontrar também por este link:
https://hub.docker.com/_/amazonlinux/
Pegadinhas Python + Lambda
Agora vamos realizar a nossa instalação utilizando o docker e seguir os seguintes passos:
Pegadinhas Python + Lambda
Pegadinhas Python + Lambda
Agora temos um ambiente mais “seguro” para instalar as suas dependências. No projeto lambda-ci tem uma variedade de imagens prontas para o processo de build dos seus lambdas.
OBS: Você ainda pode encontrar mais alguns problemas como algumas bibliotecas específicas.
Conclusão
Perguntas
?
Obrigado :)
https://rtancman.com.br�https://github.com/rtancman
https://facebook.com/rtancman
https://twitter.com/rtancman
https://www.linkedin.com/in/rtancman