Was ist AWS Lambda?
Lambda ist ein Serverless-Compute-Service:
- Kein Server-Management: AWS verwaltet alle Infrastruktur
- Pay-per-use: Kosten nur für Ausführungszeit (1 ms Granularität)
- Auto-Scaling: Von 0 bis Millionen Anfragen automatisch
- Unterstützte Laufzeiten: Python, Node.js, Java, Go, .NET, Ruby, Container
Erste Lambda-Funktion (Python)
# lambda_function.py
import json
import boto3
from datetime import datetime
def lambda_handler(event, context):
# Event-Daten auswerten
print(f"Event: {json.dumps(event)}")
# AWS SDK in Lambda verwenden
s3 = boto3.client('s3')
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps({
'message': 'Lambda läuft!',
'timestamp': datetime.now().isoformat()
})
}
# Deployment-Paket erstellen
zip function.zip lambda_function.py
# IAM-Rolle für Lambda
aws iam create-role --role-name lambda-basic-role --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"},"Action":"sts:AssumeRole"}]}'
aws iam attach-role-policy --role-name lambda-basic-role --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
# Lambda-Funktion erstellen
aws lambda create-function --function-name meine-funktion --runtime python3.12 --role arn:aws:iam::123456789012:role/lambda-basic-role --handler lambda_function.lambda_handler --zip-file fileb://function.zip --timeout 30 --memory-size 256
# Funktion testen
aws lambda invoke --function-name meine-funktion --payload '{"test": "data"}' output.json
cat output.json
API Gateway Trigger
# HTTP API erstellen
API_ID=$(aws apigatewayv2 create-api --name meine-api --protocol-type HTTP --query 'ApiId' --output text)
# Lambda-Integration
INTEGRATION_ID=$(aws apigatewayv2 create-integration --api-id $API_ID --integration-type AWS_PROXY --integration-uri "arn:aws:lambda:eu-central-1:123456789012:function:meine-funktion" --payload-format-version 2.0 --query 'IntegrationId' --output text)
# Route erstellen
aws apigatewayv2 create-route --api-id $API_ID --route-key 'GET /api/test' --target "integrations/$INTEGRATION_ID"
# Stage deployen
aws apigatewayv2 create-stage --api-id $API_ID --stage-name prod --auto-deploy
# Lambda Permissions für API Gateway
aws lambda add-permission --function-name meine-funktion --statement-id apigw-trigger --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:eu-central-1:123456789012:$API_ID/*/*"
S3 Trigger (Bildverarbeitung)
# Event-Notification für S3 Bucket konfigurieren
cat > s3-notification.json << 'EOF'
{
"LambdaFunctionConfigurations": [
{
"LambdaFunctionArn": "arn:aws:lambda:eu-central-1:123456789012:function:bild-verarbeitung",
"Events": ["s3:ObjectCreated:*"],
"Filter": {
"Key": {"FilterRules": [{"Name": "suffix","Value": ".jpg"}]}
}
}
]
}
EOF
aws s3api put-bucket-notification-configuration --bucket upload-bucket --notification-configuration file://s3-notification.json
EventBridge Scheduler (Cron)
# Tägliche Lambda um 03:00 UTC
aws events put-rule --name "daily-cleanup" --schedule-expression "cron(0 3 * * ? *)" --state ENABLED
aws events put-targets --rule "daily-cleanup" --targets '[{"Id":"1","Arn":"arn:aws:lambda:eu-central-1:123456789012:function:cleanup"}]'
Lambda Umgebungsvariablen und Secrets
# Umgebungsvariablen setzen
aws lambda update-function-configuration --function-name meine-funktion --environment 'Variables={DB_HOST=rds-endpoint,DB_NAME=appdb,STAGE=production}'
# Secrets Manager Integration (besser als ENV-Vars für Passwörter)
# In Lambda-Code:
# import boto3
# secret = boto3.client('secretsmanager').get_secret_value(SecretId='db-password')
FAQ
Wann ist Lambda teurer als EC2?
Bei dauerhafter Last (> 50% CPU-Auslastung) ist EC2 günstiger. Lambda ist optimal für sporadische/ereignisgesteuerte Workloads.
Was sind Lambda Cold Starts?
Erste Ausführung nach Inaktivität: Lambda initialisiert Container (~100–500 ms). Lösung: Provisioned Concurrency oder Warmer-Funktionen.
Fazit
AWS Lambda ist ideal für event-getriebene Prozesse, APIs und Automatisierungen – ohne Server-Management und mit minimalem Grundpreis.
AWS Serverless und Lambda für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.