Linuxguide

AWS Lambda – Serverless Funktionen einrichten 2025

Code ausführen ohne Server: Event-getriebene Architektur mit Lambda

S
SeeColors IT
11. Juni 20264 Min. Lesezeit55 Aufrufe

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.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel