DEV Community

Kaike Castro
Kaike Castro

Posted on • Updated on

Como subir uma aplicação com Terraform com Fargate

A seguir, você encontrará um guia passo a passo de como subir uma aplicação Fargate na AWS com Terraform:

Certifique-se de ter uma conta na AWS e um ambiente de desenvolvimento configurado em sua máquina.

Crie um arquivo de configuração do Terraform chamado "main.tf" e defina suas credenciais da AWS, a região e o provedor que você está usando:

provider "aws" {
  access_key = "SUA_ACCESS_KEY"
  secret_key = "SUA_SECRET_KEY"
  region     = "US-WEST-2"
}
Enter fullscreen mode Exit fullscreen mode

Defina uma VPC (Virtual Private Cloud) onde sua aplicação será executada:

resource "aws_vpc" "my_vpc" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "My VPC"
  }
}
Enter fullscreen mode Exit fullscreen mode

Em seguida, crie um sub-rede dentro da VPC:

resource "aws_subnet" "my_subnet" {
  vpc_id     = aws_vpc.my_vpc.id
  cidr_block = "10.0.1.0/24"
  tags = {
    Name = "My Subnet"
  }
}
Enter fullscreen mode Exit fullscreen mode

Defina uma regra de segurança para a aplicação:

resource "aws_security_group" "my_security_group" {
  name_prefix = "my-security-group"
  vpc_id      = aws_vpc.my_vpc.id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Crie um cluster ECS (Elastic Container Service) para a aplicação:

resource "aws_ecs_cluster" "my_cluster" {
  name = "My Cluster"
}
Enter fullscreen mode Exit fullscreen mode

Em seguida, crie uma definição de tarefa ECS que será usada para executar sua aplicação:

data "template_file" "my_task_definition" {
  template = file("${path.module}/task_definition.json")

  vars = {
    image_name = "my-image-name"
    port       = "80"
  }
}

resource "aws_ecs_task_definition" "my_task_definition" {
  family                   = "my-task-definition"
  container_definitions    = data.template_file.my_task_definition.rendered
  requires_compatibilities = ["FARGATE"]
}
Enter fullscreen mode Exit fullscreen mode

Crie um serviço ECS que irá executar a tarefa:

resource "aws_ecs_service" "my_service" {
  name            = "My Service"
  cluster         = aws_ecs_cluster.my_cluster.arn
  task_definition = aws_ecs_task_definition.my_task_definition.arn
  desired_count   = 1
  launch_type     = "FARGATE"

  network_configuration {
    subnets          = [aws_subnet.my_subnet.id]
    security_groups  = [aws_security_group.my_security_group.id]
    assign_public_ip = true
  }
}
Enter fullscreen mode Exit fullscreen mode

Dicas

Ao iniciar instâncias Fargate elas não podem ter o mesmo numero de cpu e memória idênticos abaixo segue uma tabela de como definir cpu e memória

CPU value Memory value Operating systems supported for AWS Fargate
256 (.25 vCPU) 512 MiB, 1 GB, 2 GB Linux
512 (.5 vCPU) 1 GB, 2 GB, 3 GB, 4 GB Linux
1024 (1 vCPU) 2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB Linux, Windows
2048 (2 vCPU) Between 4 GB and 16 GB in 1 GB increments Linux, Windows
4096 (4 vCPU) Between 8 GB and 30 GB in 1 GB increments Linux, Windows
8192 (8 vCPU) Between 16 GB and 60 GB in 4 GB increments Linux
16384 (16vCPU) Between 32 GB and 120 GB in 8 GB increments Linux

Por fim, execute o comando "terraform init" para inicializar o projeto e "terraform apply" para criar a infraestrutura na AWS.
Este é um exemplo simples de como subir uma aplicação Fargate na AWS usando Terraform. Você pode personalizar e ajustar os recursos conforme necessário para atender às necessidades do seu aplicativo.

Top comments (1)

Collapse
 
wedneyyuri profile image
Wédney Yuri

Fargate é uma mão na roda, agiliza bastante o processo. Só não esquecer da tabela de referência de CPU/memória que está tudo certo 🤪