Material criado para a aula de AWS CDK do Supletivo Data Hackers.
O objetivo é criar uma aplicação que utiliza o AWS CDK para criar uma stack de infraestrutura na AWS. Essa stack será composta por um bucket S3, uma função Lambda e um API Gateway.
Confira aqui o conteúdo gravado
- Criar uma stack de infraestrutura na AWS utilizando o AWS CDK
- Mostrar como o CDK gera o template CloudFormation
- Mostrar como o CDK faz o deploy da stack
- Mostrar como trabalhar com diferentes ambientes (dev, prod, etc)
- Criar um bucket S3
- Criar uma função Lambda que:
- Recebe um input e escreve um arquivo no bucket S3
- Lê o arquivo do bucket S3 e retorna o conteúdo
- Lista os arquivos do bucket S3
- Criar um API Gateway
- Criar um endpoint para escrever um arquivo no bucket S3
- Criar um endpoint para ler um arquivo do bucket S3
- Criar um endpoint para listar os arquivos do bucket S3
- Criar um teste para a função Lambda
- Criar um teste para a infraestrutura
- Para instalar esse projeto você precisa ter o Python Poetry instalado. Para instalar o Poetry, siga as instruções do site oficial
- Você também precisa instalar o AWS CDK. Para isso, também siga as instruções do site oficial.
- Por fim, você precisa ter uma conta na AWS e configurar as credenciais de acesso. Para isso, siga as instruções do site oficial.
-
Crie um perfil para acessar as suas credenciais. Para isso, crie um arquivo
~/.aws/credentials
com o seguinte conteúdo:[my_profile] aws_access_key_id = <your_access_key_id> aws_secret_access_key = <your_secret_access_key>
-
Crie um arquivo
~/.aws/config
com o seguinte conteúdo:[profile my_profile] region=us-east-1 output=json
-
Simplesmente rode:
make init
Esse comando irá criar um ambiente virtual Python e instalar todas as dependências necessárias para rodar o projeto. Também vai rodar os testes para garantir que tudo está funcionando.
Acesse o ambiente virtual com:
source .venv/bin/activate
Após modificar o seu stack, você pode rodar o seguinte comando para ver o template CloudFormation gerado:
cdk synth
E para fazer o deploy da stack:
cdk deploy <Nome-da-Stack>--profile my_profile
- Poetry: https://python-poetry.org/
- AWS CDK: https://docs.aws.amazon.com/cdk/latest/guide/home.html
- CDK Docs: https://docs.aws.amazon.com/cdk/api/v2/python/index.html
- Terraform: https://www.terraform.io/
- Pre-commit: https://pre-commit.com/
- Checkov: https://www.checkov.io/