Lambda-Funktionen: Runtimes, Trigger und Handler
Schreiben Sie eine Lambda-Funktion, wählen Sie eine Runtime, konfigurieren Sie Speicher und Timeout und verbinden Sie sie mit einem S3-Ereignis oder einem API-Gateway-Trigger.
Lambda-Funktionen: Runtimes, Trigger und Handler ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was ist AWS Lambda?
AWS Lambda ist ein serverloser Compute-Service, der Ihren Code als Reaktion auf Ereignisse ausführt, ohne dass Sie Server bereitstellen oder verwalten müssen. Sie zahlen nur für die verbrauchte Rechenzeit, die in Millisekunden gemessen wird. Dadurch ist Lambda für sporadische, ereignisgesteuerte Workloads besonders kosteneffizient. Lambda skaliert auf Grundlage eingehender Ereignisse automatisch von null auf Tausende gleichzeitiger Ausführungen.
Unterstützte Runtimes
Lambda unterstützt verwaltete Runtimes wie Python, Node.js, Java, Go, Ruby, .NET und weitere. AWS verwaltet diese Runtimes und spielt Sicherheits-Patches ein. Für Sprachen oder Runtime-Versionen, die nicht nativ unterstützt werden, können Sie über eine ausführbare bootstrap-Datei eine Custom Runtime bereitstellen oder Ihre Funktion in einem Container-Image (bis zu 10 GB) statt in einem ZIP-Bereitstellungspaket verpacken.
Die Lambda-Handler-Funktion
Jede Lambda-Funktion verfügt über einen Handler – den Einstiegspunkt, den Ihr Code exportieren muss. AWS ruft den Handler mit zwei Argumenten auf: dem event-Objekt (den Eingabedaten des Triggers) und einem context-Objekt (Metadaten zum Aufruf, etwa Funktionsname, verbleibende Zeit und Request-ID). Der Handler gibt eine Antwort zurück, die je nach Aufruftyp an den Aufrufer zurückgegeben werden kann.
# Python handler example
def lambda_handler(event, context):
# event contains the trigger payload
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(f'Processing {key} from {bucket}')
return {
'statusCode': 200,
'body': 'Processed successfully'
}Arbeitsspeicher, Timeout und flüchtiger Speicher
Mit Lambda können Sie den Arbeitsspeicher auf einen Wert zwischen 128 MB und 10.240 MB konfigurieren. Die CPU wird proportional zum Arbeitsspeicher zugewiesen – mehr Arbeitsspeicher bedeutet mehr CPU. Das Timeout kann zwischen 1 Sekunde und 15 Minuten liegen. Wenn Ihre Funktion diesen Wert überschreitet, beendet Lambda sie. Außerdem steht Ihnen flüchtiger /tmp-Speicher zur Verfügung (standardmäßig 512 MB, konfigurierbar bis zu 10 GB), den Sie innerhalb eines einzelnen Aufrufs für temporäre Dateien verwenden können. Dieser Speicher bleibt über mehrere Aufrufe hinweg nicht erhalten.
Synchrone und asynchrone Aufrufe
Lambda-Funktionen können synchron aufgerufen werden (der Aufrufer wartet auf das Ergebnis – verwendet von API Gateway und ALB) oder asynchron (der Aufrufer wartet nicht – verwendet bei S3-Ereignissen und SNS). Im asynchronen Modus wiederholt Lambda fehlgeschlagene Ausführungen bis zu zweimal und kann fehlgeschlagene Ereignisse an eine Dead-Letter-Queue (SQS oder SNS) oder einen EventBridge-Event-Bus weiterleiten. Die Wahl des richtigen Aufrufmodus wirkt sich auf das Design der Fehlerbehandlung aus.
Häufige Lambda-Trigger
Lambda lässt sich nativ mit Dutzenden AWS-Services als Ereignisquellen (Triggern) integrieren:
- API Gateway / ALB: HTTP-Anfragen (synchron)
- S3: Ereignisse beim Erstellen/Löschen von Objekten (asynchron)
- DynamoDB Streams / Kinesis: Datenstrom von Datensätzen (abrufbasiert, synchron)
- SQS: Nachrichten aus einer Warteschlange (abrufbasiert)
- SNS: Benachrichtigungen zu Themen (asynchron)
- EventBridge: zeitgesteuerte oder benutzerdefinierte Ereignisse
- CloudWatch Logs: Filter für Protokollabonnements
IAM-Ausführungsrolle
Jede Lambda-Funktion muss über eine IAM-Ausführungsrolle verfügen, die der Funktion die Berechtigung erteilt, andere AWS-Services aufzurufen. Wenn Ihre Funktion beispielsweise aus S3 liest und in DynamoDB schreibt, benötigt die Ausführungsrolle die Berechtigungen s3:GetObject und dynamodb:PutItem. Befolgen Sie das Prinzip der geringsten Rechte: Erteilen Sie nur die Berechtigungen, die Ihre Funktion tatsächlich benötigt. Die grundlegende Ausführungsrolle muss außerdem logs:CreateLogGroup, logs:CreateLogStream und logs:PutLogEvents für CloudWatch Logs enthalten.
Bereitstellungspakete und Größenbeschränkungen
Lambda unterstützt zwei Bereitstellungsformate: eine ZIP-Datei (50 MB komprimiert, 250 MB entpackt), die direkt oder über S3 hochgeladen wird, sowie ein Container-Image (bis zu 10 GB), das in Amazon ECR gespeichert wird. ZIP-Pakete lassen sich schneller bereitstellen und eignen sich gut für kleine Funktionen und Lambda Layers. Container-Images sind ideal für große Mengen an Abhängigkeiten oder für Teams, die bereits Docker-basierte Workflows verwenden. Beide Formate können dieselben Laufzeitumgebungen und dasselbe Handler-Muster verwenden.
# Deploy a ZIP package from S3
aws lambda update-function-code \
--function-name 'MyFunction' \
--s3-bucket 'my-lambda-packages' \
--s3-key 'my-function-v2.zip'Umgebungsvariablen und Secrets
Übergeben Sie Konfigurationen mithilfe von Umgebungsvariablen an Lambda. Speichern Sie vertrauliche Werte (API-Schlüssel, Datenbankpasswörter) in AWS Secrets Manager oder im Parameter Store und rufen Sie sie bei der Initialisierung der Funktion (außerhalb des Handlers) ab, um von der Wiederverwendung des Ausführungskontexts zu profitieren. Hinterlegen Sie Secrets niemals fest in Ihrem Funktionscode oder als Klartext in Umgebungsvariablen. Verwenden Sie KMS-Verschlüsselung für Lambda-Umgebungsvariablen, um sie im Ruhezustand zu schützen.
import boto3
import os
# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
Name=os.environ['DB_PASSWORD_PARAM'],
WithDecryption=True
)['Parameter']['Value']
def lambda_handler(event, context):
# DB_PASSWORD is already loaded; no SSM call on each invocation
passCold Starts und Wiederverwendung des Ausführungskontexts
Der erste Aufruf einer Lambda-Funktion nach der Bereitstellung oder nach einer Phase der Inaktivität verursacht einen Cold Start: AWS muss die Laufzeitumgebung initialisieren, Ihr Bereitstellungspaket herunterladen und den Initialisierungscode ausführen. Nachfolgende Aufrufe innerhalb derselben Ausführungsumgebung sind Warm Starts und deutlich schneller. Platzieren Sie globalen Initialisierungscode (SDK-Clients, Datenbankverbindungen) außerhalb des Handlers, damit der Ausführungskontext bei warmen Aufrufen wiederverwendet werden kann.
Lambda in einer VPC
Standardmäßig wird Lambda in einer von AWS verwalteten VPC ausgeführt und kann auf das Internet, jedoch nicht auf die Ressourcen Ihrer privaten VPC zugreifen. Um auf eine RDS-Datenbank oder einen ElastiCache-Cluster in einem privaten Subnetz zuzugreifen, konfigurieren Sie Lambda so, dass es innerhalb Ihrer VPC ausgeführt wird, indem Sie Subnetze und Sicherheitsgruppen angeben. VPC-aktivierte Lambda-Funktionen verwenden für die Vernetzung Hyperplane ENIs (keine Bereitstellung von ENIs mehr pro Funktion), wodurch der frühere Cold-Start-Nachteil von VPC-Lambdas entfällt.
aws lambda update-function-configuration \
--function-name 'MyFunction' \
--vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'Kurztest
Testen Sie Ihr Verständnis der AWS-Solutions-Architect-Konzepte (SAA-C03) aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Lambda-Laufzeitumgebungen unterstützen Python, Node.js, Java, Go und weitere Sprachen. Für spezielle Anwendungsfälle stehen benutzerdefinierte Laufzeitumgebungen und Container-Images zur Verfügung. Trigger wie API Gateway (synchron) sowie S3/SNS (asynchron) bestimmen, wie Ereignisse in Lambda-Funktionen gelangen. Außerdem sind die Ausführungsrolle, Umgebungsvariablen und die VPC-Konfiguration wichtige Aspekte für die sichere Verbindung von Lambda mit anderen AWS-Services. Als Nächstes befassen wir uns mit Lambda-Konkurrenz, Drosselung und reservierter Konkurrenz.
Häufig gestellte Fragen
Ist die Lektion „Lambda-Funktionen: Runtimes, Trigger und Handler“ kostenlos?
Ja — der vollständige Text von „Lambda-Funktionen: Runtimes, Trigger und Handler“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Lambda-Funktionen: Runtimes, Trigger und Handler“?
Schreiben Sie eine Lambda-Funktion, wählen Sie eine Runtime, konfigurieren Sie Speicher und Timeout und verbinden Sie sie mit einem S3-Ereignis oder einem API-Gateway-Trigger. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?
Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Lambda-Funktionen: Runtimes, Trigger und Handler“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?
Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Lambda-Funktionen: Runtimes, Trigger und Handler
- Nebenläufigkeit, Drosselung und reservierte Nebenläufigkeit
- Lambda Layers und Deployment-Pakete
- Lambda@Edge und ereignisgesteuerte Patterns