Script para deploy de api na aws lambda
10 DE JULHO, 2022 [#4]
Introdução
Neste artigo não irei me estender muito na parte de configuração e o processo de deploy na AWS Lambda
como um todo, irei apenas disponíbilizar um script para automatizar esse processo e com certeza deixar tudo mais rápido.
Para este exemplo iremos utilizar outro serviço da AWS chamado Amazon S3
que é basicamente um local para armazenamento de arquivos de qualquer tipo. Esse serviço disponíbiliza acesso a 5GB de armazenamento por 12 meses no nível gratuíto. É no S3 onde iremos realizar o upload do projeto para uso no Lambda.
Requerimentos do Sistema
sudo apt install zip
sudo apt install awscli
Zip Package
Comprimir nossa aplicação em um arquivo .ZIP
mkdir zip && cp -r app/ zip/app/ && cp -r config.py zip/config.py \
&& cd $venv_dir && zip -r9 "$root_dir/$file_name" . \
&& cd "$root_dir/zip" && zip -g ../$file_name -r . \
&& cd "$root_dir" && rm -r zip
Upload S3
Realizar o upload do nosso arquivo .ZIP para o S3.
cd $root_dir \
&& aws s3 cp $file_name s3://$bucket_name/$file_name
Update Function Lambda
Atualizar a função Lambda com a última versão.
aws lambda update-function-code --function-name $function_name --s3-bucket $bucket_name --s3-key $file_name
cd $root_dir
rm -r $file_name
Modelo Básico de Estrutura de API
projects/
│
├── app/
│ │
│ │
│ └── api/
│ ├── __init__.py
│ └── main.py
│
├── config.py/
│
└── vemv/
Script Completo
#!/usr/bin/env bash
root_dir=$PWD
venv_dir="$root_dir/venv/lib/python3.9/site-packages"
function_name="app-api-dev"
bucket_name="app-api"
file_name="app_dev.zip"
# Zip Package
mkdir zip && cp -r app/ zip/app/ && cp -r config.py zip/config.py
&& cd $venv_dir && zip -r9 "$root_dir/$file_name" .
&& cd "$root_dir/zip" && zip -g ../$file_name -r .
&& cd "$root_dir" && rm -r zip
# Upload S3
cd $root_dir
&& aws s3 cp $file_name s3://$bucket_name/$file_name
# Update Function Lambda
aws lambda update-function-code --function-name $function_name --s3-bucket $bucket_name --s3-key $file_name
cd $root_dir
rm -r $file_name
Mais informações