← Semua pembelajaran / AWS untuk AI Engineer
Fase 2 · IaC & CI/CD

AWS CloudFormation

CloudFormation adalah lapisan yang benar-benar membuat resource di AWS. CDK, SAM, dan Serverless Framework semuanya berakhir jadi template CloudFormation.

Intisari

  • Template mendeskripsikan resource; stack adalah wujud nyatanya yang dikelola sebagai satu kesatuan.
  • Perubahan bersifat transaksional: gagal di tengah → rollback otomatis ke keadaan sebelumnya.
  • Menghapus stack menghapus resource-nya — kecuali diberi DeletionPolicy: Retain.
  • Drift detection memberi tahu kalau seseorang mengubah resource lewat konsol.
  • Kamu akan menulis CDK, bukan YAML mentah — tapi setiap error deploy muncul dalam bahasa CloudFormation.

Kenapa tetap perlu paham CloudFormation

Kamu akan menulis infrastruktur dengan CDK dalam Python. Tapi CDK tidak memanggil API AWS satu per satu — ia men-generate template CloudFormation lalu menyerahkannya. Konsekuensinya: setiap kali deploy gagal, pesan errornya datang dari CloudFormation, menyebut nama logis CloudFormation, dan mengikuti aturan rollback CloudFormation. Tanpa model mentalnya, kamu akan mendebug lapisan yang salah.

Bentuk template

AWSTemplateFormatVersion: '2010-09-09'

Parameters:
  NamaModel:
    Type: String
    Default: anthropic.claude-3-5-haiku-20241022-v1:0

Resources:
  AntreanIngest:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: ingest-dokumen
      VisibilityTimeout: 180

  FungsiTanya:
    Type: AWS::Serverless::Function
    Properties:
      Handler: app.handler
      Runtime: python3.13
      Environment:
        Variables:
          MODEL_ID: !Ref NamaModel
          ANTREAN_URL: !Ref AntreanIngest

Outputs:
  UrlAntrean:
    Value: !Ref AntreanIngest
    Export:
      Name: ingest-queue-url
BagianFungsinya
ParametersMasukan saat deploy — beda nilai per lingkungan
ResourcesSatu-satunya bagian yang wajib. Isinya apa yang dibuat.
OutputsNilai yang diekspor, mis. untuk stack lain
!Ref / !GetAttMenautkan resource satu ke lainnya; ini yang membentuk urutan pembuatan

!Ref dan !GetAtt melakukan lebih dari sekadar menyalin nilai: mereka membuat dependensi. CloudFormation membaca graf itu dan menentukan sendiri apa yang harus dibuat lebih dulu. Kamu tidak pernah menulis urutan secara manual.

Siklus hidup stack

  1. Create — semua resource dibuat. Kalau satu gagal, semuanya di-rollback.
  2. Update — CloudFormation membandingkan template baru dengan keadaan sekarang, lalu menerapkan selisihnya.
  3. Rollback — kalau update gagal, kembali ke versi sebelumnya secara otomatis.
  4. Delete — seluruh resource stack dihapus.

Yang paling mengejutkan pendatang baru: sebagian perubahan properti memaksa replacement — resource lama dihapus dan yang baru dibuat, dengan identitas baru. Mengganti nama antrean SQS, misalnya, bukan "rename" melainkan "buat baru, buang lama beserta isinya". Selalu jalankan cdk diff atau lihat change set sebelum deploy ke production, dan perhatikan kata replace.

Melindungi yang tidak boleh hilang

  BucketDokumen:
    Type: AWS::S3::Bucket
    DeletionPolicy: Retain
    UpdateReplacePolicy: Retain

Untuk bucket dokumen, vector store, dan tabel riwayat percakapan, dua baris ini adalah pembeda antara "stack dihapus" dan "data hilang permanen". Pasang sejak awal.

Drift

Kalau seseorang mengubah resource lewat konsol, template dan kenyataan jadi berbeda — itu yang disebut drift. CloudFormation bisa mendeteksinya, dan hasilnya sering mengejutkan: perbaikan darurat jam 2 pagi yang tidak pernah dikembalikan ke kode.

aws cloudformation detect-stack-drift --stack-name tanya-bedrock
aws cloudformation describe-stack-resource-drifts --stack-name tanya-bedrock

Latihan: deploy template kecil berisi satu antrean SQS lewat aws cloudformation deploy. Lalu ubah VisibilityTimeout-nya lewat konsol, jalankan drift detection, dan amati laporannya. Terakhir, deploy ulang template asli dan perhatikan drift-nya hilang.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.