1
resposta

Atualização terraform S3 bucket.

Aparentemente houve uma atualizaçao no dia 10/02/2022 no qual o aws_s3_bucket sofreu diversas alterações no seu modo de uso. Em versões anteriores utilizava-se o comando:

resource "aws_s3_bucket" "dev4" {
  bucket = "terraform-test"
  acl    = "private"

  tags = {
    Name = "terraform-test"
  }
}

E ao rodar um terraform plan hoje com este comando o resultado é:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Ao ler a documentação do s3, consta as diversas alteraçoes ocorridas no s3. E o codigo que acredito ser o equivalente é esse:

resource "aws_s3_bucket" "b" {
  bucket = "my-tf-test-bucket"

  tags = {
    Name        = "My bucket"
    Environment = "Dev"
  }
}

resource "aws_s3_bucket_acl" "example" {
  bucket = aws_s3_bucket.b.id
  acl    = "private"
}

Porem a duvida que fica é que ao rodar um terraform plan ele retorna Plan: 2 to add, 0 to change, 0 to destroy., ou seja estamos criando um aws_s3_bucket e um aws_s3_bucket_acl... fico em duvida e com certo pé atras de rodar o apply e ter custos desconhecidos.

Deixo uma discussao do github sobre o assunto: https://github.com/hashicorp/terraform-provider-aws/issues/23106.

Gostaria de entender melhor o que de fato estou criando com esse novo comando.

1 resposta

Olá, Gabriel. Tudo bem?

Primeiramente, obrigado por ter compartilhado aqui a forma mais atualizada de criar o bucket.

Sobre sua dúvida, o que acontece é que agora a criação da ACL (Access Control List) do Bucket não é mais feita na própria definição do Bucket, mas de forma separada, um recurso separado no terraform. Provavelmente essa mudança de para separar as responsabilidades de cada recurso do Terraform, ficando mais claro o que cada um deles faz, permitindo que configurações mais complexas possam ser feitas na ACL sem deixar o código do Bucket em si mais difícil de entender.

Apesar de ser separada na criação pelo terraform, a ACL do bucket não gera um custo adicional.

Espero ter ajudado. Bons estudos!