Crear un cubo S3 en AWS con Terraform

En este artículo, te mostraré cómo utilizar Terraform para crear un cubo S3 en AWS. Antes de continuar, asumo que estás familiarizado con el cubo S3, si no es así, puedes hacer clic aquí para ver los pasos para crear un cubo S3 desde la consola de AWS.

Requisitos previos

  1. Conocimiento básico de Terraform.
  2. Terraform instalado en tu sistema.
  3. Cuenta de AWS (Crea si no tienes una).
  4. ‘access_key’ & ‘secret_key’ de un usuario IAM de AWS. (Haz clic aquí para aprender a crear un usuario IAM con ‘access_key’ & ‘secret_key’ en AWS, )

Qué vamos a hacer

  1. Escribir los archivos de configuración de Terraform para el S3 Bucket.
  2. Crear unS3 Bucket utilizando los archivos de configuración de Terraform.
  3. Eliminar elS3 Bucket creado utilizando Terraform.

Escribir los archivos de configuración de Terraform para S3 Bucket

Crea un directorio dedicado donde puedas crear archivos de configuración de Terraform.

Utiliza el siguiente comando para crear un directorio y cambia tu actual directorio de trabajo a él.

mkdir terraform
cd terraform/

Estoy utilizando «vim» como editor para escribir en los archivos, puedes utilizar un editor de tu elección y copiar y pegar las siguientes configuraciones para crear variables.tf, terraform.tfvars y main.tf

Crea ‘main.tf’ que se encargará de crear un cubo S3 en AWS. Este main.tf leerá los valores de las variables de variables.tf y terraform.tfvars.

vim main.tf
provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}

resource "aws_s3_bucket" "this" {
  bucket                               = "${var.bucket_name}"
  force_destroy                        = "${var.force_destroy}"
  region                               = "${var.region}"
  tags                                 = "${merge(var.tags, map("Name", format("%s", var.bucket_name)))}"
}

Here,

  • bucket: The name of the bucket. If omitted, Terraform will assign a random, unique name.
  • force_destroy:Un booleano que indica que todos los objetosdeben ser eliminados del bucket para que éste pueda ser destruido sin error.
  • region: La región de AWS en la que debe residir este cubo.
  • tags:Un mapa de etiquetas para asignar al cubo.

Cambia el valor de «región» si quieres crear el cubo en alguna región distinta a la que he especificado.

Crea ‘variables.tf’ que contiene la declaración y definición de las variables.

vim variables.tf
variable "access_key" {
     description = "Access key to AWS console"
}
variable "secret_key" {
     description = "Secret key to AWS console"
}
variable "region" {
     description = "Region of AWS VPC"
}

variable "bucket_name" {
  description = "(Required) Creates a unique bucket name"
  type        = "string"
  default     = "test-bucket-rahul-delete"
}

variable "force_destroy" {
  description = "(Optional) A boolean that indicates all objects should be deleted from the bucket so that the bucket can be destroyed without error"
  type        = "string"
  default     = true
}

variable "tags" {
  description = "(Optional) A mapping of tags to assign to the bucket"
  type        = "map"
  default     = {"env": "test"}
}

Una vez que hayas creado ‘variables.tf’, no olvides cambiar los valores asignados a las variables. Debes cambiar los valores resaltados ya que son específicos de mi entorno. Puedes mantener el resto de variables tal y como están.

Crea ‘terraform.tfvars’ que contiene la definición de las variables access_key y secret_key definidas en el archivo anterior junto con la variable «region».

Las siguientes claves deben cambiarse con las claves de tu usuario IAM.

vim terraform.tfvars
region = "eu-west-3"
access_key = "AKIAQ6GAIA5XFLXF6HOV"
secret_key = "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"

Ahora deberías tener 3 archivos, a saber, variables.tf, terraform.tfvars y main.tf

Crea un S3 Bucket utilizando los archivos de configuración de Terraform

Antes de ejecutar los siguientes comandos asegúrate de haber configurado la access_key y secret_key válidas.

El primer comando a utilizar es ‘terraform init’. Este comando descarga e instala los plugins de los proveedores utilizados en la configuración. En nuestro caso es AWS.

 terraform init

Terraformar init

El segundo comando a utilizar es ‘terraform plan’. Este comando se utiliza para ver los cambios que se producirán en la infraestructura.

 terraform plan

plan de terraformación

El comando «terraformar aplicar» creará los recursos en la AWS mencionados en el archivo main.tf. Se te pedirá que proporciones tus datos para crear los recursos.

terraform apply

aplicar terraformación

Cuando ejecutes el comando anterior, una vez completado con éxito, podrás ver que se ha añadido 1 nuevo recurso y se han destruido 0.

Puedes ir a la consola de AWS S3 para verificar si el S3 Bucket está creado o no.

AWS S3

Eliminar un S3 Bucket con Terraform

Si ya no necesitas un recurso que has creado utilizando la configuración mencionada en el archivo main.tf, puedes utilizar el comando «terraform destroy» para eliminar todos esos recursos. Aquí, el cubo S3 se eliminará al ejecutar el siguiente comando.

terraform destroy

terraform destroy

En la captura de pantalla anterior, puedes ver que el recurso ha sido destruido.

Conclusión

En este artículo, hemos visto los pasos para crear un Bucket S3 utilizando Terraform. También hemos visto cómo se puede eliminar el Bucket que hemos creado con un solo comando.

Scroll al inicio