Blog Sobre
↼ Voltar para a lista

Utilizando as tags padrão do provider AWS do Terraform para melhorar a administração dos seus recursos

Apr 06, 2024 - 2 min read

Rotular (a tradução da documentação oficial utiliza o termo marcar, para tagging) os seus recursos na AWS é uma prática recomendada para administrar e organizar os seus recursos. A documentação oficial é extensa sobre como alcançar uma boa estratégia de marcação. Em um cenário onde você está automatizando o provisionamento da sua infraestrutura com o Terraform, é possível ir um passo além e gerenciar facilmente as suas tags com o recurso de tags padrão do provider AWS. Isso o ajuda a alcançar uma estratégia de marcação consistente em todos os seus recursos, melhorando a sua administração e visibilidade dos recursos.

O bloco default_tags #

O trecho de código abaixo ilustra o conceito, onde as tags Environment = "Dev" e Owner = "John Doe" são automaticamente aplicadas a todos os recursos criados pelo provider AWS para o seu workspace Terraform, ao mesmo tempo em que é possível adicionar tags específicas por recurso através da propriedade tags.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "eu-central-1"

  default_tags {
    tags = {
      Environment = "Dev"
      Owner       = "Fulano"
    }
  }
}

resource "aws_s3_bucket" "somente_tags_padrao" {
  bucket = "leolleo-dev-bucket-com-somente-tags-padrao"
}

resource "aws_s3_bucket" "tags_padrao_e_sobrescritas" {
  bucket = "leolleo-dev-default-tags-padrao-e-sobrescritas"

  tags = {
    Owner   = "Sicrano"
    Purpose = "Armazenamento temporário"
  }
}

Executando terraform plan obtemos a saída abaixo. Note como as tags padrão são aplicadas a ambos os buckets e sobrescritas e estendidas no segundo (primeiro na imagem).

Saída do plano do Terraform

Após aplicar o plano, as imagens abaixo mostram como ficam as tags de ambos os buckets no console da AWS.

Console de gerenciamento da AWS com as tags padrão Console de gerenciamento da AWS com as tags sobrescritas e extras

Criando uma tag de referência ao workspace do terraform #

Uma maneira útil de utilizar o que foi mostrado acima é anexar uma tag TerraformWorkspace a todos os seus recursos AWS do Terraform. Isso lhe dá a capacidade de referenciar rapidamente qualquer recurso que você veja na sua(s) conta(s) AWS de volta ao código/workspace que o define, além de ajudar a identificar quais deles foram criados manualmente ou por outros meios.

O nome do workspace é disponibilizado ao seu código através do valor nomeado terraform.workspace, o que torna possível utilizá-lo como TerraformWorkspace = terraform.workspace no bloco default_tags.

Isso tem o benefício adicional de torná-lo capaz de filtrar o seus recursos na AWS por workspace, seja no Management Console, CLI ou SDKs; e de utilizá-lo como uma tag de alocação de custos, permitindo que você rastreie os seus custos AWS por workspace.

Conclusão #

Neste pequeno post vimos uma maneira simples, porém poderosa, de rotular os seus recursos AWS com o Terraform, facilitando a sua administração e rastreamento. Este é apenas um dos muitos benefícios que se obtém da utilização da infraestrutura como código de um modo geral.

Espero que tenha achado este post útil e que ele lhe ajude na sua jornada. Se tiver alguma dúvida ou sugestão, sinta-se à vontade para entrar em contato nos comentários abaixo. Boa codificação! 🚀