Python + AWS Lambda Hands On
Python
- Criada em 1990, por Guido Van Rossum.
- "Bala de prata" (quase).
- Muito utilizado em:
- Automatizações - Selenium, Beautiful Soap
- Bigdata - PySpark
- Data Sciente - Jupyter, Libs estatisticas e analise exploratória
- Machine Learn / Deep Learning - NLTK, Scikit-Learn, Tensor Flow, Keras
- Web - Django
- Hack (Mr. Robot)
Preparação do Ambiente
Criação do ambiente:
python3 -m venv ./hands-on-env
Ativação do ambiente:
# Linux
./hands-on-env/bin/activate
# Windows
hands-on-env/Script/activate.bat
PIP
- É o gerenciador de pacotes do Python.
- Gradle/Maven/NPM do Python
Instalação das dependências
pip install <NOME DO PACOTE>
# OU
pip install -r requirements.txt
Exemplos de script
exemplos/1-hello-world.py
Notebooks
jupyter notebook notebooks
AWS Lambda
- Function as a service (FAAS)
- Functions são configuradas, carregadas e executadas por uma runtime
- Configuramos somente a memória. CPU é alocada indiretamente
- Pagamos pelo tempo de duração da execução da função
- Uma das peças principais de uma arquitetura Serverless
Pontos principais (Cai nas certificações):
- Tempo máximo de duração 15 min
- Pacote pode ter até 50 Mb zipado e 250 Mb deszipado
- 512 Mb storage disponível no /tmp
- Mínimo 128 MB and máximo 3GB
Permissões
- AWS Lambda execution role
Exemplo: Assume role policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
}
]
}
Versões
- Cada deploy de uma lambda recebe uma versão sequencial e um ARN.
- O ARN com sufixo latest aponta para o último deploy
- Por essa caracteristica de imutabilidade de versão, podemos utilizar apelidos (Alias). Feature muito utilizada em integrações com o API Gateway para os modelos de deploy Blue Green
# Criar um apelido
aws lambda create-alias --function-name my-function --name alias-name --function-version version-number --description " "
# Alterar o apelido
aws lambda update-alias --function-name my-function --name alias-name --function-version version-number
To delete an alias, use the delete-alias command.
# Deletar o apelido
aws lambda delete-alias --function-name my-function --name alias-name
Ciclo de Vida
Fase Inicial:
- Cria ou descongela a função
- Faz download do código;
- Configura as variáveis de ambiente;
- Roda as funções de inicialização - Tudo que não pertença à função handler
Fase Execução:
- A função handler é executada. Só pagamos por esse tempo (Billing execution).
Fase Desligamento:
- Quando a função não recebe requisições por x segundos, a lambda é desligada.
Criação da Infraestrutura
Criação do Projeto
Podemos criar o projeto utilizando o Serverless Application Model (SAM).
-
Instalar o client
-
Criar a base do projeto:
sam init
# Seguir o passo a passo
Execução local
sam local invoke FunctionExemplo --event events/event.json