Criar uma solucação em ECS para rodar um container com uma aplicação web com os sequintes recursos
- Cluster ECS rodando em Fargate
- Build e Push de uma imagem docker para o docker registry
- Task para criar o serviço rodando o container que foi criado
- IAM roles para que a task seja executada com as permissoes necessarias
- VPC na AWS com 2 subnetes em 2 AZ diferentes para alta disponibilidade
- Application Loadbalancer para roteador o trafego externo para os endereços internos
- Um apontamento do Route 53 com o Application Loadbalancer para o host app.labdev.cloud para ter um nome de fácil acesso
- Certificado validado e assinado para prover criptografia e cumprir os requisitos de segurança
- Um dashboard básico do CloudWatch para monitorar memória e CPU
- Um budget mensal para monitorar o custo com alerta de e-mail caso consuma 80% do que foi definido
- Scan de segurança da imagem docker com o Trivy
- Assinatura da Imagem com o Cosing
A pipeline para criação do projeto com a imagem docker, um cluster ECS e uma task provisionado com terraform.
Variáveis armazendas em secrets:
AWS_ACCESS_KEY_ID => Access Key utilizada para configurar o AWS CLI.
AWS_SECRET_ACCESS_KEY => Secret access Key utilizada para configurar o AWS CLI.
AWS_BUCKET_NAME => Nome do Bucket utilizado para armazenar o estado do projeto Terraform.
TF_BUCKET_NAME => Nome do arquivo utilizado para armazenar o estado do projeto Terraform.
DOCKERHUB_USERNAME => Nome do usuário no Docker Hub.
DOCKERHUB_TOKEN => Token utilizado no Docker Hub.
COSIGN_PRIVATE_KEY => Chave privada do Cosign para assinatura.
COSIGN_PASSWORD => Password da chave privada
- Separar ambientes dev, homolog e prod utilizando o Terraform Workspace ou Terraform Grunt para criação e gerenciamento desses ambientes.

