Inicio > Cursos > AWS para Developers > Terraform e Infraestructura como Codigo
AWS para DevelopersDatos, Seguridad y ServerlessLección 10 de 12

Terraform e Infraestructura como Codigo

Terraform te permite definir toda tu infraestructura AWS en archivos de codigo (HCL). En vez de hacer click en la consola, escribes que quieres y Terraform lo crea.

Ventajas: • Reproducible: misma infra en dev, staging y prod • Versionable: tu infra esta en Git con historial • Automatizable: CI/CD puede desplegar infra • Multi-cloud: funciona con AWS, GCP, Azure, etc.

Conceptos clave: • Provider: plugin que conecta con AWS, GCP, etc. • Resource: un servicio a crear (EC2, S3, RDS...) • Variable: parametros reutilizables • Output: valores que Terraform muestra al terminar • State: archivo donde Terraform guarda que ha creado • Plan: preview de cambios antes de aplicarlos

# main.tf — Infraestructura completa para una app web

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

provider "aws" {
  region = var.region
}

variable "region" {
  default = "us-east-1"
}

variable "environment" {
  default = "dev"
}

# Bucket S3 para archivos
resource "aws_s3_bucket" "uploads" {
  bucket = "mi-app-${var.environment}-uploads"
  tags = {
    Environment = var.environment
  }
}

# Instancia EC2
resource "aws_instance" "web" {
  ami           = "ami-0c02fb55956c7d316"
  instance_type = "t3.micro"
  tags = {
    Name = "mi-app-${var.environment}"
  }
}

# Base de datos RDS
resource "aws_db_instance" "database" {
  identifier     = "mi-app-${var.environment}-db"
  engine         = "postgres"
  engine_version = "15.4"
  instance_class = "db.t3.micro"
  allocated_storage = 20
  username       = "admin"
  password       = var.db_password
  skip_final_snapshot = true
}

variable "db_password" {
  sensitive = true
}

output "ec2_ip" {
  value = aws_instance.web.public_ip
}

output "rds_endpoint" {
  value = aws_db_instance.database.endpoint
}
# Flujo de trabajo con Terraform

# 1. Inicializar (descarga providers)
terraform init

# 2. Ver que va a hacer (preview)
terraform plan -var="db_password=MiPassword123!"

# 3. Aplicar cambios (crear/modificar infra)
terraform apply -var="db_password=MiPassword123!"

# 4. Ver estado actual
terraform show

# 5. Destruir todo (cuidado!)
terraform destroy

# Tip: usa archivos .tfvars para variables
# terraform apply -var-file="prod.tfvars"
ConsejoSiempre corre terraform plan antes de apply. Revisa los cambios propuestos. Un error en Terraform puede borrar recursos en produccion.
← API Gateway y Arquitectura ServerlessECS y Fargate: Contenedores en la Nube →

Practica esta lección

Resuelve los ejercicios del curso de AWS para Developers en la app, gratis y con corrección automática.

Empezar a practicar