O uso de Infrastructure as Code com Terraform traz automação, padronização e controle para a criação de ambientes em nuvem. No exemplo abaixo, mostramos como criar um cluster ECS com Fargate e definir uma task que executa uma aplicação Django containerizada.
O primeiro bloco utiliza um módulo pronto da comunidade para configurar o ECS:
module "ecs" {
source = "terraform-aws-modules/ecs/aws"
name = var.ambiante
container_insights = true
capacity_providers = ["FARGATE"]
default_capacity_provider_strategy = [
{
capacity_provider = "FARGATE"
}
]
}
Esse módulo automatiza a criação do cluster ECS com suporte ao Fargate e ativa os insights de monitoramento. Usar módulos prontos do Terraform Registry ajuda a acelerar o desenvolvimento e reduzir erros.
Na sequência, temos a definição de uma task do ECS, que representa a aplicação Django que será executada em containers:
resource "aws_ecs_task_definition" "Django-API" {
family = "Django-API"
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = 256
memory = 512
execution_role_arn = aws_iam_role.cargo.arn
container_definitions = jsonencode(
[
{
"name" = "producao"
"image" = "962752222089.dkr.ecr.us-west-2.amazonaws.com/producao:v1"
"cpu" = 256
"memory" = 512
"essential" = true
"portMappings" = [
{
"containerPort" = 8000
"hostPort" = 8000
}
]
}
]
)
}
Nessa definição, é configurado:
O uso do Fargate, que elimina a necessidade de gerenciar servidores
CPU e memória alocados para o container
A imagem Docker hospedada no ECR
O mapeamento da porta 8000, onde o Django estará escutando
Além disso, é usada uma role do IAM para execução da task, garantindo os devidos acessos à infraestrutura.
Essa abordagem permite criar, escalar e manter ambientes de produção ou desenvolvimento de forma segura, reutilizável e rastreável, com todo o histórico versionado em arquivos Terraform.