AWS Step Functions
Step Functions menjalankan alur kerja sebagai state machine: setiap langkah punya retry, error handling, dan riwayat eksekusi yang bisa dilihat. Ini tulang punggung pola ReAct dan human-in-the-loop di AWS.
Intisari
- Alur ditulis sebagai state machine (Amazon States Language, JSON) — bukan kode prosedural.
- Retry dan
Catchbersifat deklaratif per state; kamu tidak menulis loop backoff sendiri lagi. - Standard: sampai 1 tahun, riwayat penuh. Express: sampai 5 menit, throughput sangat tinggi, lebih murah.
Mapmemproses banyak item paralel;Choicemembuat percabangan tanpa Lambda.- Callback pattern (
waitForTaskToken) menahan alur sampai manusia menyetujui — inilah human-in-the-loop.
Kenapa ini penting di roadmap AWS untuk AI
Exam guide AIP-C01 menyebut Step Functions berulang kali: untuk pola ReAct, untuk
stopping condition agent, untuk circuit breaker, dan untuk alur persetujuan manusia.
Alasannya sama semua: pekerjaan agentik itu berlangkah banyak, sebagian gagal, dan kamu perlu melihat
apa yang terjadi di langkah ke berapa. Menulis itu sebagai try/except bersarang di dalam satu Lambda
adalah cara yang akan menyiksamu.
| Kebutuhan | Di dalam satu Lambda | Dengan Step Functions |
|---|---|---|
| Retry dengan backoff | Kode manual di setiap pemanggilan | Deklaratif, per state |
| Melihat langkah yang gagal | Baca log, tebak-tebak | Grafik eksekusi dengan input/output tiap langkah |
| Berjalan > 15 menit | Tidak bisa | Sampai 1 tahun |
| Menunggu persetujuan manusia | Tidak masuk akal | Task token |
| Batas jumlah langkah agent | Penghitung manual | Bagian dari definisi alur |
Bentuk state machine
{
"Comment": "Ambil konteks, tanya model, simpan jawaban",
"StartAt": "AmbilKonteks",
"States": {
"AmbilKonteks": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": { "FunctionName": "retrieve-kb", "Payload.$": "$" },
"ResultSelector": { "konteks.$": "$.Payload.konteks" },
"Next": "TanyaModel"
},
"TanyaModel": {
"Type": "Task",
"Resource": "arn:aws:states:::bedrock:invokeModel",
"Parameters": {
"ModelId": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-5-haiku-20241022-v1:0",
"Body": { "messages.$": "$.pesan" }
},
"Retry": [
{
"ErrorEquals": ["Bedrock.ThrottlingException"],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
}
],
"Catch": [
{ "ErrorEquals": ["States.ALL"], "Next": "JawabanCadangan" }
],
"End": true
},
"JawabanCadangan": {
"Type": "Pass",
"Result": { "jawaban": "Maaf, layanan sedang sibuk. Coba lagi sebentar lagi." },
"End": true
}
}
}
Perhatikan blok Retry: enam percobaan dengan backoff eksponensial, tanpa satu baris kode.
Dan Catch yang mengarah ke jawaban cadangan — inilah graceful degradation yang disebut
exam guide, diwujudkan secara deklaratif.
State yang perlu kamu kenal
| Type | Gunanya |
|---|---|
Task | Memanggil sesuatu: Lambda, Bedrock, SQS, atau API AWS mana pun |
Choice | Percabangan berdasarkan isi data — tanpa Lambda tambahan |
Map | Ulangi untuk tiap item, paralel. Untuk ingest ribuan dokumen: distributed map |
Parallel | Beberapa cabang berbeda sekaligus, mis. bertanya ke dua model lalu bandingkan |
Wait | Jeda sekian detik atau sampai timestamp tertentu |
Fail / Succeed | Mengakhiri eksekusi secara eksplisit |
Standard vs Express
| Standard | Express | |
|---|---|---|
| Durasi maksimum | 1 tahun | 5 menit |
| Riwayat eksekusi | Tersimpan penuh, bisa ditelusuri di konsol | Hanya lewat CloudWatch Logs |
| Harga | Per transisi state | Per durasi & memori — jauh lebih murah saat ramai |
| Semantik | Tepat sekali | Minimal sekali |
| Cocok untuk | Alur agentik, ingest, persetujuan | Alur sinkron di balik API |
Human-in-the-loop
{
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke.waitForTaskToken",
"Parameters": {
"FunctionName": "kirim-permintaan-review",
"Payload": { "token.$": "$$.Task.Token", "draf.$": "$.jawaban" }
},
"TimeoutSeconds": 86400,
"Next": "Terbitkan"
}
Alur berhenti di sini sampai seseorang memanggil SendTaskSuccess dengan token itu — bisa dari
tombol di aplikasi internal, bisa dari Slack. Tidak ada proses yang menunggu dan tidak ada biaya berjalan
selama menunggu.
Latihan: buat state machine tiga langkah: Choice yang memeriksa panjang pertanyaan,
mengarah ke model murah kalau pendek dan model kuat kalau panjang, lalu menyatu ke satu langkah penyimpanan.
Ini model routing — pola Domain 2 yang akan kembali di Fase 3.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.