Use Cases

Como automatizar despliegues en AWS con Claude Code [Guia practica]

Como automatizar despliegues en AWS con Claude Code [Guia practica]. Guia practica con ejemplos de codigo.

Por que automatizar despliegues en AWS con Claude Code

Desplegar en AWS implica escribir archivos de configuracion, gestionar roles IAM, configurar variables de entorno y otras tareas propensas a errores. Claude Code puede asistir con todo, desde la generacion de codigo de infraestructura hasta la ejecucion de despliegues, comprendiendo la estructura de tu proyecto.

Construccion de un proyecto AWS CDK

Aqui tienes un ejemplo de como pedir a Claude Code que construya infraestructura usando CDK.

> Crea un stack ECS Fargate usando AWS CDK.
> La aplicacion es Node.js con un ALB delante.
> Configuralo para obtener variables de entorno del SSM Parameter Store.

Veamos el codigo CDK que genera Claude Code.

import * as cdk from 'aws-cdk-lib';
import * as ecs from 'aws-cdk-lib/aws-ecs';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as elbv2 from 'aws-cdk-lib/aws-elasticloadbalancingv2';
import * as ssm from 'aws-cdk-lib/aws-ssm';

export class AppStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const vpc = new ec2.Vpc(this, 'AppVpc', { maxAzs: 2 });

    const cluster = new ecs.Cluster(this, 'AppCluster', { vpc });

    const taskDef = new ecs.FargateTaskDefinition(this, 'TaskDef', {
      memoryLimitMiB: 512,
      cpu: 256,
    });

    const dbHost = ssm.StringParameter.valueForStringParameter(
      this, '/app/prod/DB_HOST'
    );

    taskDef.addContainer('app', {
      image: ecs.ContainerImage.fromAsset('./'),
      portMappings: [{ containerPort: 3000 }],
      environment: { DB_HOST: dbHost },
      logging: ecs.LogDrivers.awsLogs({ streamPrefix: 'app' }),
    });

    const service = new ecs.FargateService(this, 'Service', {
      cluster,
      taskDefinition: taskDef,
      desiredCount: 2,
    });

    const lb = new elbv2.ApplicationLoadBalancer(this, 'ALB', {
      vpc,
      internetFacing: true,
    });

    const listener = lb.addListener('Listener', { port: 80 });
    listener.addTargets('Target', {
      port: 3000,
      targets: [service],
      healthCheck: { path: '/health' },
    });
  }
}

Integracion con Terraform

Tambien puedes optimizar la gestion de infraestructura con Terraform usando Claude Code.

> Define el alojamiento de sitio estatico S3 + CloudFront en terraform/main.tf.
> Configura tambien WAF con rate limiting.
> Revisa la salida de terraform plan y dime si hay algun problema.
resource "aws_s3_bucket" "site" {
  bucket = "my-app-static-site"
}

resource "aws_cloudfront_distribution" "cdn" {
  origin {
    domain_name = aws_s3_bucket.site.bucket_regional_domain_name
    origin_id   = "s3-origin"

    s3_origin_config {
      origin_access_identity = aws_cloudfront_origin_access_identity.oai.cloudfront_access_identity_path
    }
  }

  enabled             = true
  default_root_object = "index.html"

  default_cache_behavior {
    allowed_methods  = ["GET", "HEAD"]
    cached_methods   = ["GET", "HEAD"]
    target_origin_id = "s3-origin"
    viewer_protocol_policy = "redirect-to-https"

    forwarded_values {
      query_string = false
      cookies { forward = "none" }
    }
  }

  restrictions {
    geo_restriction { restriction_type = "none" }
  }

  viewer_certificate {
    cloudfront_default_certificate = true
  }
}

Integracion con GitHub Actions

Tambien puedes pedir a Claude Code que configure tu pipeline CI/CD.

> Crea un workflow de GitHub Actions.
> Debe ejecutar automaticamente cdk deploy al hacer push a la rama main.
> Usa autenticacion OIDC para conectar con AWS.
name: Deploy to AWS
on:
  push:
    branches: [main]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123456789012:role/deploy-role
          aws-region: us-east-1

      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - run: npm ci
      - run: npx cdk deploy --require-approval never

Solucion de problemas de despliegue

Cuando ocurren errores de despliegue, tambien puedes pedir a Claude Code que los analice.

> Obtuve el siguiente error de cdk deploy. Dime la causa y como solucionarlo:
> Error: The security group 'sg-xxx' does not exist

Claude Code cruza el mensaje de error con la estructura de tu proyecto para identificar problemas de configuracion de VPC o grupos de seguridad. Para flujos de trabajo generales de solucion de problemas, consulta los 10 consejos para triplicar tu productividad con Claude Code.

Mejores practicas para la automatizacion de despliegues

  1. Separar configuraciones por entorno: Cambiar entornos usando context en cdk.json
  2. Deteccion de desviaciones: Ejecutar cdk diff regularmente para verificar discrepancias
  3. Estrategia de rollback: Preparar configuraciones de despliegue Blue/Green de antemano

Al documentar estas configuraciones en CLAUDE.md, Claude Code siempre generara codigo alineado con las directrices de tu proyecto. Para mas informacion sobre el uso de CLAUDE.md, consulta la guia completa de CLAUDE.md.

Summary

Con Claude Code puedes optimizar todo el flujo de despliegue, desde la configuracion de infraestructura AWS hasta la configuracion del pipeline CI/CD. Funciona con CDK, Terraform y SAM por igual. Comienza con un stack pequeno y expande gradualmente tu automatizacion.

Para mas informacion sobre Claude Code, consulta la documentacion oficial de Anthropic. Para las mejores practicas de AWS, consulta el AWS Well-Architected Framework.

#Claude Code #AWS #deployment #CDK #infrastructure automation