Use Cases

Comment automatiser les deploiements AWS avec Claude Code [Guide pratique]

Comment automatiser les deploiements AWS avec Claude Code [Guide pratique]. Guide pratique avec exemples de code.

Pourquoi automatiser les deploiements AWS avec Claude Code

Deployer sur AWS implique d’ecrire des fichiers de configuration, de gerer les roles IAM, de configurer les variables d’environnement et d’autres taches sujettes aux erreurs. Claude Code peut assister dans tout, de la generation de code d’infrastructure a l’execution des deploiements, tout en comprenant la structure de votre projet.

Construction d’un projet AWS CDK

Voici un exemple de demande a Claude Code pour construire l’infrastructure avec CDK.

> Cree un stack ECS Fargate avec AWS CDK.
> L'application est en Node.js avec un ALB en frontal.
> Configure-le pour recuperer les variables d'environnement depuis SSM Parameter Store.

Voyons le code CDK que Claude Code genere.

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

Integration Terraform

Vous pouvez egalement optimiser la gestion d’infrastructure avec Terraform en utilisant Claude Code.

> Definis l'hebergement de site statique S3 + CloudFront dans terraform/main.tf.
> Configure egalement WAF avec du rate limiting.
> Verifie la sortie de terraform plan et dis-moi s'il y a des problemes.
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
  }
}

Integration GitHub Actions

Vous pouvez egalement demander a Claude Code de configurer votre pipeline CI/CD.

> Cree un workflow GitHub Actions.
> Il doit executer automatiquement cdk deploy lors d'un push sur la branche main.
> Utilise l'authentification OIDC pour se connecter a 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

Resolution des problemes de deploiement

Lorsque des erreurs de deploiement surviennent, vous pouvez aussi demander a Claude Code de les analyser.

> J'ai obtenu l'erreur suivante de cdk deploy. Dis-moi la cause et comment la corriger :
> Error: The security group 'sg-xxx' does not exist

Claude Code croise le message d’erreur avec la structure de votre projet pour identifier les problemes de configuration VPC ou de groupes de securite. Pour les flux de travail generaux de resolution de problemes, consultez les 10 conseils pour tripler votre productivite avec Claude Code.

Meilleures pratiques pour l’automatisation des deploiements

  1. Separer les configurations par environnement : Changer d’environnement en utilisant context dans cdk.json
  2. Detection des derives : Executer cdk diff regulierement pour verifier les ecarts
  3. Strategie de rollback : Preparer des configurations de deploiement Blue/Green a l’avance

En documentant ces configurations dans CLAUDE.md, Claude Code generera toujours du code aligne avec les directives de votre projet. Pour en savoir plus sur l’utilisation de CLAUDE.md, consultez le guide complet CLAUDE.md.

Summary

Avec Claude Code, vous pouvez optimiser tout le flux de deploiement, de la configuration de l’infrastructure AWS a la configuration du pipeline CI/CD. Cela fonctionne aussi bien avec CDK, Terraform que SAM. Commencez avec un petit stack et etendez progressivement votre automatisation.

Pour plus d’informations sur Claude Code, consultez la documentation officielle d’Anthropic. Pour les meilleures pratiques AWS, consultez le AWS Well-Architected Framework.

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