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
| Bagian | Fungsinya |
|---|---|
Parameters | Masukan saat deploy — beda nilai per lingkungan |
Resources | Satu-satunya bagian yang wajib. Isinya apa yang dibuat. |
Outputs | Nilai yang diekspor, mis. untuk stack lain |
!Ref / !GetAtt | Menautkan 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
- Create — semua resource dibuat. Kalau satu gagal, semuanya di-rollback.
- Update — CloudFormation membandingkan template baru dengan keadaan sekarang, lalu menerapkan selisihnya.
- Rollback — kalau update gagal, kembali ke versi sebelumnya secara otomatis.
- 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.