top of page

Optimiza tus costos con instancias Spot y Terraform en solo unos pasos

  • victoriagimenez5
  • 1 jul
  • 2 Min. de lectura
" "

Cuando buscamos reducir nuestros costos en la nube, las instancias spot de AWS se presentan como una de las mejores alternativas. Hoy te muestro cómo aprovecharlas con Terraform para tus entornos no productivos.


Las instancias spot son ideales para bajar gastos en ambientes no críticos. Eso sí: hay que tener en cuenta la estrategia de asignación, los tipos de instancia y ciertos riesgos antes de configurarlas.


Vamos paso a paso.


Paso 1: Configura aws_launch_template y autoscaling_group

Primero, definimos los recursos aws_launch_template y aws_autoscaling_group en Terraform. Asegurate de incluir variables como la AMI, tipo de instancia, perfil IAM y configuración de red. Un ejemplo:


resource "aws_launch_template" "Lt" {



 name_prefix   = "asg-testLT-"
 image_id      = var.ami_id
 ebs_optimized = "false"
 instance_type = var.instance_type
 key_name      = var.key_name
 security_groups = var.security_groups
 user_data  = var.user_data
 metadata_options {

   http_endpoint               = "enabled"
   http_tokens                 = "required"
   http_put_response_hop_limit = 2

 }

 network_interfaces {

   associate_public_ip_address = var.public_ip
   security_groups             = var.security_group

 }

 iam_instance_profile {
   arn = var.instance_profile_arn
 }

 block_device_mappings {
   device_name = "/dev/xvda"
   ebs {

       volume_size           = var.root_vol_size
       volume_type           = "gp2"
       delete_on_termination = true
     }

   }

}

Y luego, configurá el autoscaling group con política de instancias mixtas

resource "aws_autoscaling_group" "asg" {

  vpc_zone_identifier       = data.aws_subnet_ids.private.ids
  name                      = var.asgName
  max_size                  = var.maxSize
  min_size                  = var.minSize
  health_check_grace_period = 100
  default_cooldown          = var.cooldown
  health_check_type         = var.healthCheckType
  desired_capacity          = var.desiredSize
  capacity_rebalance        = true
  force_delete              = true
  mixed_instances_policy {
     instances_distribution {
       spot_allocation_strategy = "capacity-optimized-prioritized"
     }
     launch_template {
       launch_template_specification {
         launch_template_id = aws_launch_template.Lt.id
         version            = "$Latest"
       }

       override {
         instance_type =  "t3.large"
       }

       override {
         instance_type = "t3a.large"
       }

       override {
         instance_type ="t2.large"
       }

     }

 }

 termination_policies = [
   "OldestInstance",
   "OldestLaunchConfiguration",
   "Default",
 ]

}
 

Paso 2: Definí una política de instancias mixtas

Para utilizar Spot en Auto Scaling, necesitás configurar mixed_instances_policy con:

  • instances_distribution: define cómo combinar instancias spot y on-demand. En este caso usamos solo spot, pero podés usar un mix si tu aplicación lo requiere.

  • launch_template: especifica el template de lanzamiento, incluyendo los tipos de instancia a utilizar.

Este enfoque te da control total sobre cómo AWS asigna tus instancias.


Paso 3: Elige tu estrategia de asignación Spot

La estrategia de asignación es clave. Estas son las más comunes:


  • priceCapacityOptimized: balancea entre precio bajo y baja interrupción.

  • capacityOptimized (usada en este ejemplo): selecciona las pools con mayor capacidad disponible, ideal para cargas sensibles.

  • lowestPrice: elige instancias del pool más barato. Es la estrategia por defecto, pero puede ser más riesgosa.

Para ayudarte a elegir, usá AWS Spot Instance Advisor.


Paso 4: Seleccioná tipos de instancia

Para elegir el tipo correcto de instancia spot:

  • Considerá vCPUs, memoria y región.

  • Revisá el historial de interrupciones y disponibilidad en AWS Spot Advisor.

  • Por ejemplo, t3.large en us-east-2 tiene <5% de interrupciones y hasta 70% de ahorro frente a on-demand.


Recomendamos definir al menos 4 tipos distintos para garantizar disponibilidad.

" "

Reflexión final

Las instancias spot son una excelente herramienta para reducir costos en entornos no productivos. Sin embargo, es vital analizar bien la estrategia, los tipos de instancia y los riesgos antes de implementarlas.


Con Terraform y herramientas como el Spot Advisor, podés tomar decisiones informadas, optimizar tus recursos y mantener tus cargas de trabajo estables y eficientes.



photo-of-juan-bermudez




Juan Bermudez

Cloud Engineer

Teracloud










 
 
bottom of page