Use Cases

Como Automatizar Deployments na AWS com Claude Code [Guia Prático]

Como Automatizar Deployments na AWS com Claude Code [Guia Prático]. Um guia prático com exemplos de código.

Por Que Automatizar Deployments na AWS com Claude Code

Fazer deploy na AWS envolve escrever arquivos de configuração, gerenciar roles IAM, configurar variáveis de ambiente e outras tarefas propensas a erros. O Claude Code pode auxiliar em tudo, desde a geração de código de infraestrutura até a execução de deployments, tudo enquanto entende a estrutura do seu projeto.

Construindo um Projeto AWS CDK

Aqui está um exemplo de como pedir ao Claude Code para construir infraestrutura usando CDK.

> Crie um stack ECS Fargate usando AWS CDK.
> O app é Node.js com um ALB na frente.
> Configure para buscar variáveis de ambiente do SSM Parameter Store.

Vamos ver o código CDK que o Claude Code gera.

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' },
    });
  }
}

Integração com Terraform

Você também pode otimizar o gerenciamento de infraestrutura com Terraform usando o Claude Code.

> Defina hospedagem de site estático S3 + CloudFront em terraform/main.tf.
> Configure também WAF com rate limiting.
> Verifique a saída do terraform plan e me diga se há algum 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
  }
}

Integração com GitHub Actions

Você também pode pedir ao Claude Code para configurar seu pipeline de CI/CD.

> Crie um workflow de GitHub Actions.
> Deve executar automaticamente CDK deploy ao fazer push para o branch main.
> Use autenticação OIDC para conectar à 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

Solução de Problemas de Deployment

Quando erros de deployment ocorrem, você também pode pedir ao Claude Code para analisá-los.

> Recebi o seguinte erro do cdk deploy. Me diga a causa e como corrigir:
> Error: The security group 'sg-xxx' does not exist

O Claude Code cruza a mensagem de erro com a estrutura do seu projeto para identificar problemas de configuração de VPC ou security group. Para workflows gerais de solução de problemas, consulte 10 Dicas para Triplicar Sua Produtividade com Claude Code.

Melhores Práticas para Automação de Deployment

  1. Separar configurações de ambiente: Trocar ambientes usando context no cdk.json
  2. Detecção de drift: Executar cdk diff regularmente para verificar discrepâncias
  3. Estratégia de rollback: Preparar configurações de Blue/Green deployment antecipadamente

Ao documentar essas configurações no CLAUDE.md, o Claude Code sempre gerará código alinhado com as diretrizes do seu projeto. Para mais informações sobre o uso do CLAUDE.md, consulte o guia completo do CLAUDE.md.

Resumo

Com o Claude Code, você pode otimizar todo o workflow de deployment - desde a configuração de infraestrutura AWS até a configuração de pipeline CI/CD. Funciona igualmente com CDK, Terraform e SAM. Comece com um stack pequeno e expanda gradualmente sua automação.

Para mais informações sobre o Claude Code, consulte a documentação oficial da Anthropic. Para melhores práticas da AWS, consulte o AWS Well-Architected Framework.

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