Mengonfigurasi fungsi Lambda

Aplikasi Serverless dengan AWS Lambda

Claudio Canales

Senior DevOps Engineer

Mengapa konfigurasi penting

  • Kode yang sama bisa berperilaku sangat berbeda dengan setelan berbeda.
  • Konfigurasi memengaruhi kinerja, biaya, dan keamanan.
  • Tujuannya perilaku yang dapat diprediksi di dev dan prod.

Kode sama, setelan berbeda

Aplikasi Serverless dengan AWS Lambda

Kode vs konfigurasi

Paket kode

  • Paket kode
  • Logika handler + dependensi.
  • Perubahan memerlukan deploy.

Konfigurasi fungsi

  • Konfigurasi fungsi
  • Memori, timeout, variabel lingkungan.
  • Execution role + layer.
Aplikasi Serverless dengan AWS Lambda

Kontrol yang Anda atur

  • Runtime + handler: kode apa yang dijalankan Lambda.
  • Memori + timeout: kinerja, biaya, keamanan.
  • Variabel lingkungan: konfigurasi tanpa hard-code.
  • Execution role: izin untuk API AWS.
  • Layer: dependensi bersama lintas fungsi.

Tombol konfigurasi Lambda

Aplikasi Serverless dengan AWS Lambda

Dasar runtime dan handler

  • Runtime = lingkungan bahasa (misalnya, Python).
  • Handler = titik masuk yang dipanggil Lambda.
  • Format handler: file.function.
  • Contoh: lambda_function.lambda_handler.

Rincian string handler

Aplikasi Serverless dengan AWS Lambda

String handler: potensi masalah

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Impor lalu pemanggilan handler

Aplikasi Serverless dengan AWS Lambda

Execution role (IAM)

  • IAM = Identity and Access Management (izin).
  • Execution role menentukan apa yang boleh dilakukan fungsi Anda.
  • Ini mengontrol API AWS mana yang dapat dipanggil kode Anda.

Execution role seperti kartu akses

Aplikasi Serverless dengan AWS Lambda

Apa itu Lambda layer?

  • Layer adalah file ZIP yang dilampirkan ke fungsi.
  • Lambda menyediakan file layer saat runtime di /opt.
  • Gunakan layer untuk library bersama dan utilitas umum.
  • Perbarui layer sekali; banyak fungsi dapat memakainya.

Layer terpasang di /opt

Aplikasi Serverless dengan AWS Lambda

Lokasi layer saat runtime

  • Kode fungsi Anda dipasang di /var/task.
  • Layer terlampir dipasang di /opt.
  • Lambda juga menyediakan folder sementara di /tmp.

Folder runtime: /var/task, /opt, /tmp

Aplikasi Serverless dengan AWS Lambda

Memori juga memengaruhi CPU

  • Lebih banyak memori -> lebih banyak CPU.
  • Dapat mengurangi waktu jalan untuk tugas CPU-bound.
  • Biaya total bergantung pada durasi dan memori.

Memori menaikkan CPU

Aplikasi Serverless dengan AWS Lambda

Tuning memori berbasis pengukuran

  • Mulai dengan default yang wajar (misalnya, 256 MB).
  • Uji dengan event realistis.
  • Bandingkan durasi dan biaya antar ukuran memori.

Sapu memori: ukur durasi dan biaya

Aplikasi Serverless dengan AWS Lambda

Timeout dan eksekusi aman

  • Timeout menghentikan eksekusi liar.
  • Periksa sisa waktu sebelum pekerjaan panjang.
  • Gagal cepat dan retry bila perlu.

Timeout sebagai pengaman waktu

Aplikasi Serverless dengan AWS Lambda

Langkah: memeriksa sisa waktu

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Penjaga hitung mundur konteks

Aplikasi Serverless dengan AWS Lambda

Variabel lingkungan

  • Pisahkan konfigurasi dari kode.
  • Pisahkan setelan dev/test/prod.
  • Gunakan Secrets Manager untuk nilai sensitif.

Variabel lingkungan mengonfigurasi perilaku

Aplikasi Serverless dengan AWS Lambda

Langkah: membaca variabel lingkungan

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Default membuat uji lokal lebih aman

  • Impor os untuk mengakses variabel lingkungan.
  • os.getenv mengembalikan nilai atau default.
Aplikasi Serverless dengan AWS Lambda

Jebakan konfigurasi umum

  • Hard-code nilai stage di dalam kode.
  • Timeout terlalu rendah atau izin IAM kurang.
  • Rahasia di variabel lingkungan biasa.

Jebakan dan aturan praktis

Aplikasi Serverless dengan AWS Lambda

Ayo berlatih!

Aplikasi Serverless dengan AWS Lambda

Preparing Video For Download...