AWS LAMBDA → STACKIT · ARCHITEKTUR
AWS Lambda auf STACKIT: Container-Plattform je Funktion wählen
Eine Lambda-Funktion ist Code, Auslöser und Abrechnungsmodell. Auf STACKIT läuft der Code als dauerhaft laufender Prozess, entweder als Cloud-Foundry-App oder als Container auf SKE, und der Auslöser muss neu gebaut werden. StackToIT hat einen Queue-Worker und eine zeitgesteuerte Report-Funktion bewertet und unterschiedlich eingestuft, denn was eine Funktion aufruft, zählt mehr als ihre Laufzeit.
Die Optionen für eine Funktion
Entscheiden Sie je Funktion, nicht je Umgebung. Ein Queue-Worker, eine HTTP-Funktion und ein nächtlicher Job brauchen selten dieselbe Plattform.
| Option | Was sich ändert | Abwägung |
|---|---|---|
| Cloud-Foundry-App | Der Handler wird in einen HTTP-Server oder eine Worker-Schleife gepackt und mit einem Manifest gepusht. Buildpacks übernehmen das Staging des Codes. | Wenig Plattformarbeit und Offline-Buildpacks für gängige Sprachen. Ob ein Buildpack Ihre genaue Laufzeitversion enthält, ist nicht dokumentiert; prüfen Sie das also. Einen dokumentierten Weg, ein fertiges Image zu pushen, fand der Lauf nicht. |
| Container auf SKE | Sie bauen ein Image und betreiben es als Deployment, Job oder CronJob auf einem verwalteten Kubernetes-Cluster. | Container-Image-Funktionen bleiben, wie sie sind, und Zeitpläne bekommen ein natives Objekt. Manifeste, Registry und Image-Build betreiben Sie selbst. |
| Queue-Consumer im Dienst | Die Consumer-Schleife für die Queue wird in die Anwendung geschrieben, die aus RabbitMQ liest. | Das Event-Source-Mapping entfällt vollständig, aber es ist eine Codeänderung und ein Messaging-Redesign, kein Deployment. |
| STACKIT-Functions-API | Ruft eine API auf, die der Lauf nur als Spezifikation in einer frühen Version fand. | StackToIT bietet diese Aufrufe nur hinter einem ausdrücklichen Opt-in an und nie als Standardschritt. Planen Sie darauf keine Produktivumgebung. |
Die Zeile zur Functions API nennt, was der Lauf fand. Die Produktübersicht von STACKIT führte am 4. November 2026 keinen Funktionsdienst (die Runtime-Produkte sind Cloud Foundry, Edge Cloud und Kubernetes Engine), und der Provider stackitcloud/stackit hat weder in der vom Lauf verwendeten Version 0.121.0 noch in 0.122.0 eine Funktionsressource.
Ein Queue-Worker: Funktion und Auslöser
Eingabe für diese Seite geschrieben und am 4. November 2026 bewertet. Links eine Container-Image-Funktion mit SQS-Event-Source-Mapping, rechts das Cloud-Foundry-Manifest, das StackToIT dafür schrieb, ohne die Kommentarzeilen darüber in der Datei.
resource "aws_lambda_function" "worker" {
function_name = "orders-worker"
role = aws_iam_role.fn.arn
package_type = "Image"
image_uri = "123456789012.dkr.ecr.eu-central-1.amazonaws.com/orders-worker:1.4.0"
memory_size = 512
timeout = 60
environment {
variables = {
QUEUE_URL = aws_sqs_queue.orders.url
}
}
}
resource "aws_lambda_event_source_mapping" "orders" {
event_source_arn = aws_sqs_queue.orders.arn
function_name = aws_lambda_function.worker.arn
batch_size = 10
}---
applications:
- name: "orders-worker"
memory: 512M
instances: 1 # one always-on instance; size from peak concurrency (App AutoScaler for elasticity)
stack: cflinuxfs4
buildpacks:
- ((buildpack))
no-route: true
health-check-type: process
env:
"QUEUE_URL": ((orders_worker_queue_url))REDESIGN, Konfidenz LOW
Zwei Befunde treffen zusammen: Für ein SQS-Event-Source-Mapping gibt es auf STACKIT keinen gleichwertigen Auslöser, und ein Container-Image gibt einem Buildpack nichts zum Stagen.
Der Worker läuft ohne Route
Das Manifest setzt no-route und einen Prozess-Healthcheck, weil niemand den Worker per HTTP aufruft. Die Kommentare der Datei markieren beide Attribute als nicht gegen STACKITs eigene Dokumentation bestätigt.
Die Queue zieht mit
Die SQS-Queue ist als REPLATFORM eingestuft; entworfen wird eine RabbitMQ-Instanz. Queue-Namen und Visibility Timeout werden nicht angelegt; der Consumer quittiert stattdessen.
Eine zeitgesteuerte, per HTTP aufrufbare Funktion
Die zweite Funktion hat ein Zip-Paket, eine Zeitplan-Regel und eine Function URL. Sie ist als CONTAINERIZE eingestuft, mit Konfidenz MEDIUM. Rechts das Manifest ohne die Kommentarzeilen darüber in der Datei.
resource "aws_lambda_function" "report" {
function_name = "nightly-report"
role = aws_iam_role.fn.arn
runtime = "python3.12"
handler = "app.handler"
filename = "report.zip"
memory_size = 256
timeout = 300
}
resource "aws_cloudwatch_event_rule" "nightly" {
name = "nightly-report"
schedule_expression = "cron(0 2 * * ? *)"
}---
applications:
- name: "nightly-report"
memory: 256M
instances: 1 # one always-on instance; size from peak concurrency (App AutoScaler for elasticity)
stack: cflinuxfs4
buildpacks:
- python_buildpack_offlineLaufzeit auf Buildpack abgebildet
python3.12 wird auf das Offline-Python-Buildpack abgebildet. STACKIT führt dieses Buildpack für den Stack cflinuxfs4 auf, aber nicht, welche Python-Versionen es enthält.
Der Zeitplan wird zum CronJob
Die EventBridge-Regel ist als CONTAINERIZE eingestuft; entworfen wird ein SKE-Cluster. Das CronJob-Manifest selbst schreiben Sie von Hand.
IAM-geschützte URL, öffentliche Route
Die Function URL verlangt AWS-IAM-Signierung. Eine Cloud-Foundry-Route ist öffentlich; die App muss Aufrufer daher selbst authentifizieren.
Die Plattformblöcke in Terraform
Die beiden Terraform-Ressourcen, die diese Entscheidungen tragen: die Organisation, die die Apps hostet, und der Cluster für Container. Spaces und Apps pushen Sie mit dem cf-Werkzeug, nicht mit Terraform.
resource "stackit_scf_organization" "migrated_apps" {
project_id = var.project_id
name = "migrated-apps"
}resource "stackit_ske_cluster" "containers" {
project_id = var.project_id
name = "containers"
node_pools = [{
name = "workloads"
machine_type = var.containers_machine_type
minimum = var.containers_nodes_min
maximum = var.containers_nodes_max
availability_zones = var.availability_zones
}]
}So entscheiden Sie je Funktion
Was ruft sie auf?
Ein HTTP-Aufrufer passt zu einer Cloud-Foundry-Route. Eine Queue braucht eine Consumer-Schleife. Ein Zeitplan passt zu einem CronJob. Alles, was die Funktion in AWS auslöste, muss neu gebaut werden; die Manifeste halten fest, dass kein Auslöser automatisch übernommen wird.
Wie ist sie verpackt?
Ein Zip-Paket kann an ein Buildpack gehen. Ein Container-Image bleibt ein Container und läuft daher auf SKE.
Braucht sie Scale-to-Zero?
Cloud Foundry und SKE betreiben Instanzen, die Sie dimensionieren. Lambdas Abrechnung je Aufruf und das Skalieren auf null werden nicht übernommen. Kurze, seltene Jobs müssen als CronJob keine Instanz dauerhaft belegen: Sie laufen nur zum geplanten Zeitpunkt, auf Knoten, die der Cluster ohnehin hat.
Wie lange läuft ein Aufruf?
Das Lambda-Timeout wird nicht übernommen: Ein Manifest-Timeout ist ein Start-Timeout. Setzen Sie die Grenze in der Anwendung oder in der umgebenden Plattform.
Was darf sie?
Die Ausführungsrolle wird zu einem Service Account oder zu Service-Zugangsdaten, die über die Umgebung bereitgestellt werden. Listen Sie auf, was die angehängten Richtlinien erlaubten, und gewähren Sie dasselbe auf den STACKIT-Zielen.
Fragen, die Plattformteams stellen
Gibt es auf STACKIT ein Lambda-Pendant?
Nicht als allgemein verfügbaren Funktionsdienst. Stand November 2026 führt die Produktübersicht von STACKIT keinen, und der Terraform-Provider hat keine Funktionsressource, weder in der vom Lauf verwendeten noch in der aktuellen Version. Die Container-Wege sind Cloud Foundry und SKE.
Warum ist eine Funktion MEDIUM und die andere LOW?
Der nächtliche Report ist ein Zip-Paket, das ein Offline-Buildpack stagen kann, und seine Function URL wird zur Route, mit einem Befund zur Authentifizierung. Der Queue-Worker hat ein Event-Source-Mapping ohne Gegenstück und ein Container-Image, das Buildpacks nicht stagen können.
Baut StackToIT meine Images oder schreibt meine CronJobs?
Nein. Es entwirft die Plattformressourcen und die Cloud-Foundry-Manifeste und benennt den Rest: Image-Build, Registry, Handler-Wrapper und CronJob-Manifest.
Was wird aus der Idempotenz?
AWS dokumentiert, dass ein SQS-Event-Source-Mapping jedes Ereignis mindestens einmal verarbeitet, und empfiehlt idempotenten Code. Ein RabbitMQ-Consumer mit Quittierung hat denselben Bedarf; behalten Sie diese Eigenschaft also bei.
Quellen
Ihr nächster Schritt: STACKIT.
Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.