Criando um bucket S3 na AWS usando Terraform.
Tags: aws, s3, cloud, terraform
Published: 2023-07-13 17:55:57

Neste tutorial, você aprenderá como criar um bucket S3 na AWS usando o Terraform. O Terraform é uma ferramenta de infraestrutura como código (IaC) que permite definir e provisionar recursos de infraestrutura de forma automatizada.

Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:

- 
Uma conta na AWS com as credenciais de acesso configuradas.

- 
O Terraform instalado na sua máquina. Você pode baixá-lo em no site oficial do [Terraform](https://developer.hashicorp.com/terraform/downloads).

**Passo 1: Configurando o projeto**
Crie um diretório para o seu projeto e acesse-o no terminal.

Dentro do diretório do projeto, crie três arquivos: main.tf, variables.tf e providers.tf.

- 
O arquivo main.tf conterá a configuração do bucket S3 e os recursos relacionados.

- 
O arquivo variables.tf conterá as variáveis que você deseja configurar para o seu bucket.

- 
O arquivo providers.tf conterá as configurações do provedor da AWS.

**Passo 2: Configurando o arquivo main.tf**
Abra o arquivo main.tf e adicione o seguinte código:

```
resource "aws_s3_bucket" "my_bucket" {
  bucket = var.bucket_name

  tags = {
    Name        = "my-bucket-test-tutorial"
    Environment = var.environment
  }
}
```

- 
O recurso aws_s3_bucket define um bucket na AWS. O nome do bucket é definido usando a variável var.bucket_name.

- 
As tags são usadas para adicionar metadados ao bucket, como nome e ambiente. As tags são definidas no bloco tags usando pares chave-valor.

**Passo 3: Configurando o arquivo variables.tf**
Abra o arquivo variables.tf e adicione o seguinte código:

```
variable "bucket_name" {
  type        = string
  description = "Nome do bucket da AWS"
}

variable "environment" {
  type        = string
  description = "Ambiente do bucket da AWS"
}
```
As variáveis _bucket_name_ e _environment_ são definidas para permitir a personalização do nome do bucket e do ambiente. O tipo das variáveis é definido como string e uma descrição é fornecida para facilitar o entendimento.

**Passo 4: Configurando o arquivo providers.tf**
Abra o arquivo providers.tf e adicione o seguinte código:

```
provider "aws" {
  region = "us-east-1"
  access_key = var.aws_access_key
  secret_access_key = var.aws_secret_access_key
}
```

- 
O provedor aws é configurado com a região da AWS que você deseja usar. No exemplo acima, a região é definida como us-east-1. Certifique-se de substituir esse valor pela região desejada.

- 
As chaves de acesso da AWS são definidas usando as variáveis var.aws_access_key e var.aws_secret_access_key. Certifique-se de fornecer esses valores corretamente. Você pode definir essas variáveis em um arquivo terraform.tfvars ou passá-las por linha de comando.

**Passo 5: Executando o Terraform**
Abra o terminal e navegue até o diretório do projeto.

Execute o comando _terraform init_ para inicializar o diretório do projeto e baixar os provedores necessários.
Execute o comando terraform plan para visualizar as alterações planejadas pelo Terraform.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8no4vrl8eq3urjbzhe9.png)

- 
Execute o comando _terraform apply_ para criar o bucket na AWS com base nas configurações fornecidas. No final, voce sera perguntando se gostaria de continuar com esta ação, apenas digite “Yes”.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uct2spco47923okj1x6v.png)

- 
Após alguns instantes, o Terraform criará o bucket na AWS. Você verá uma mensagem indicando o sucesso da operação.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a087fdzqme2nezbnv95l.png)

Agora você já pode acessar sua conta da AWS e ver seu bucket criado.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/37z67qhs4965y35i3cmg.png)

Conclusão
Parabéns! Você criou um bucket na AWS usando o Terraform. Agora você pode usar esse bucket para armazenar objetos e aproveitar outros recursos do S3.

Enjoy :)