Mengintegrasikan Lambda dengan layanan AWS

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Loop integrasi

  • Event masuk.
  • Logika handler.
  • Panggilan SDK.

Event -> handler -> loop SDK

Aplikasi Serverless dengan AWS Lambda

Trigger vs panggilan SDK

Trigger

  • Menentukan kapan Lambda berjalan.

Panggilan SDK (di dalam handler)

  • Baca/tulis layanan seperti DynamoDB dan S3.

Trigger vs panggilan SDK

Aplikasi Serverless dengan AWS Lambda

Contoh konkret

  • File masuk ke S3.
  • Lambda berjalan.
  • Simpan catatan kecil di DynamoDB.

Unggah S3 -> Lambda -> DynamoDB

Aplikasi Serverless dengan AWS Lambda

Payload event: temukan yang Anda perlukan

{
  "Records": [{
    "s3": {
      "bucket": {"name": "…"},
      "object": {"key": "…"}
    }
  }]
}

Penjelasan payload event S3

Aplikasi Serverless dengan AWS Lambda

Posisi AWS SDK

  • Kode Anda memanggil SDK (boto3).
  • SDK memanggil API AWS.
  • IAM adalah penjaga gerbang.

Handler -> SDK -> AWS API

Aplikasi Serverless dengan AWS Lambda

Execution role = kredensial

  • Kredensial sementara dari execution role.
  • Tidak ada access key di kode.
  • Jika role tak boleh memanggil API, panggilan SDK gagal.

Execution role menyediakan kredensial

Aplikasi Serverless dengan AWS Lambda

Least privilege: batasi aksi + resource

  • Mengurangi dampak saat insiden.
  • Beri hanya aksi dan resource yang dibutuhkan.
  • Hindari wildcard kecuali benar-benar perlu.

Least privilege: aksi dan resource

Aplikasi Serverless dengan AWS Lambda

DynamoDB: pilih operasi yang tepat

  • PutItem menulis.
  • GetItem membaca berdasarkan key.
  • Query mencari item terkait.
  • Utamakan operasi terarah, hindari scan luas.

Operasi DynamoDB

Aplikasi Serverless dengan AWS Lambda

S3: bekerja dengan bucket + key

  • Objek berada pada bucket + key.
  • GetObject mengambil konten.
  • PutObject menulis file turunan baru.

Bucket dan key S3

Aplikasi Serverless dengan AWS Lambda

Taruh konfigurasi di environment variable

  • Hardcode nama resource itu rapuh.
  • Gunakan environment variable.
  • Deploy kode yang sama ke dev dan prod.

Konfigurasi variabel lingkungan

Aplikasi Serverless dengan AWS Lambda

Kode SDK: tetap kecil dan mudah diuji

import boto3
ddb = boto3.client("dynamodb")
def handler(event, context):
    ddb.put_item(
        TableName="files",
        Item={"pk": {"S": "1"}},
    )
  • Validasi input, panggil SDK, kembalikan hasil.
  • Unit test logika murni.

Handler kecil dengan panggilan SDK

Aplikasi Serverless dengan AWS Lambda

Tangani error SDK dengan sadar

  • Error izin umum terjadi di awal.
  • Saat panggilan gagal, buat alasannya jelas.
  • Log yang baik memudahkan debug.

Jalur sukses dan gagal

Aplikasi Serverless dengan AWS Lambda

Saat IAM salah, kode tampak baik-baik saja

AccessDeniedException
required action denied
  • Perbaiki IAM dulu, baru logika handler.

Akses ditolak

Aplikasi Serverless dengan AWS Lambda

Idempotensi: retry dan duplikat yang aman

  • Anda bisa melihat event yang sama dua kali.
  • Kunci idempoten mencegah pemrosesan ganda.
  • Tulisan kondisional membuat pengulangan aman.

Pola kunci idempoten

Aplikasi Serverless dengan AWS Lambda

Menggabungkannya (end-to-end)

  • Event S3 membawa bucket dan key.
  • Handler mengurai keduanya.
  • PutItem menulis metadata ke DynamoDB.
  • CloudWatch Logs menunjukkan apa yang terjadi.

Ringkasan integrasi end-to-end

Aplikasi Serverless dengan AWS Lambda

Poin utama

  • Pisahkan trigger dari panggilan SDK.
  • Kunci izin ketat via execution role.
  • Buat konfigurasi portabel dengan env var.

Intisari integrasi

Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...