← Semua pembelajaran / AWS untuk AI Engineer
Fase 1 · Serverless & Integrasi

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 Catch bersifat 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.
  • Map memproses banyak item paralel; Choice membuat 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.

KebutuhanDi dalam satu LambdaDengan Step Functions
Retry dengan backoffKode manual di setiap pemanggilanDeklaratif, per state
Melihat langkah yang gagalBaca log, tebak-tebakGrafik eksekusi dengan input/output tiap langkah
Berjalan > 15 menitTidak bisaSampai 1 tahun
Menunggu persetujuan manusiaTidak masuk akalTask token
Batas jumlah langkah agentPenghitung manualBagian 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

TypeGunanya
TaskMemanggil sesuatu: Lambda, Bedrock, SQS, atau API AWS mana pun
ChoicePercabangan berdasarkan isi data — tanpa Lambda tambahan
MapUlangi untuk tiap item, paralel. Untuk ingest ribuan dokumen: distributed map
ParallelBeberapa cabang berbeda sekaligus, mis. bertanya ke dua model lalu bandingkan
WaitJeda sekian detik atau sampai timestamp tertentu
Fail / SucceedMengakhiri eksekusi secara eksplisit

Standard vs Express

StandardExpress
Durasi maksimum1 tahun5 menit
Riwayat eksekusiTersimpan penuh, bisa ditelusuri di konsolHanya lewat CloudWatch Logs
HargaPer transisi statePer durasi & memori — jauh lebih murah saat ramai
SemantikTepat sekaliMinimal sekali
Cocok untukAlur agentik, ingest, persetujuanAlur 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.