DEV Community

Kaike Castro
Kaike Castro

Posted on • Edited on

1

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.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

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 🤪

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook