Use Cases

Cara Mengotomatisasi AWS Deployment dengan Claude Code [Panduan Praktis]

Cara Mengotomatisasi AWS Deployment dengan Claude Code [Panduan Praktis]. Panduan praktis dengan contoh kode.

Mengapa Mengotomatisasi AWS Deployment dengan Claude Code

Deploy ke AWS melibatkan penulisan file konfigurasi, mengelola IAM role, mengatur variabel lingkungan, dan tugas lain yang rawan error. Claude Code bisa membantu semuanya mulai dari generate kode infrastruktur hingga menjalankan deployment, sambil memahami struktur project kamu.

Membangun Project AWS CDK

Berikut contoh meminta Claude Code membangun infrastruktur menggunakan CDK.

> Buat stack ECS Fargate menggunakan AWS CDK.
> App-nya Node.js dengan ALB di depannya.
> Konfigurasikan untuk menarik variabel lingkungan dari SSM Parameter Store.

Mari lihat kode CDK yang di-generate 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' },
    });
  }
}

Integrasi Terraform

Kamu juga bisa menyederhanakan manajemen infrastruktur dengan Terraform menggunakan Claude Code.

> Definisikan hosting situs statis S3 + CloudFront di terraform/main.tf.
> Atur juga WAF dengan rate limiting.
> Periksa output terraform plan dan beri tahu jika ada masalah.
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
  }
}

Integrasi GitHub Actions

Kamu juga bisa meminta Claude Code untuk setup pipeline CI/CD.

> Buat workflow GitHub Actions.
> Otomatis jalankan CDK deploy saat push ke branch main.
> Gunakan autentikasi OIDC untuk terhubung ke 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

Troubleshooting Deployment

Ketika terjadi error deployment, kamu juga bisa meminta Claude Code menganalisisnya.

> Saya mendapat error berikut dari cdk deploy. Beritahu penyebab dan cara memperbaikinya:
> Error: The security group 'sg-xxx' does not exist

Claude Code melakukan cross-reference pesan error dengan struktur project kamu untuk mengidentifikasi masalah konfigurasi VPC atau security group. Untuk alur kerja troubleshooting umum, lihat 10 Tips untuk Melipatgandakan Produktivitas Claude Code 3x.

Best Practice Otomasi Deployment

  1. Pisahkan konfigurasi environment: Ganti environment menggunakan context di cdk.json
  2. Deteksi drift: Jalankan cdk diff secara berkala untuk memeriksa perbedaan
  3. Strategi rollback: Siapkan konfigurasi deployment Blue/Green terlebih dahulu

Dengan mendokumentasikan pengaturan ini di CLAUDE.md, Claude Code akan selalu men-generate kode yang selaras dengan panduan project kamu. Untuk penggunaan CLAUDE.md, lihat Panduan Lengkap CLAUDE.md.

Summary

Dengan Claude Code, kamu bisa menyederhanakan seluruh alur kerja deployment — dari setup infrastruktur AWS hingga konfigurasi pipeline CI/CD. Bekerja dengan CDK, Terraform, dan SAM. Mulai dengan stack kecil dan perluas otomasi secara bertahap.

Untuk Claude Code, lihat dokumentasi resmi Anthropic. Untuk best practice AWS, lihat AWS Well-Architected Framework.

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