ALIBABA CLOUD FUNCTION COMPUTE → STACKIT SKE · TUTORIAL

Alibaba Function Compute migrieren: vom Terraform zum Container

STACKIT hat keinen Funktionsdienst, und StackToIT hält das in der Begründung fest: Eine Function-Compute-Funktion ist CONTAINERIZE, das Ziel ist SKE oder eine Cloud-Foundry-Docker-App. Sie verpacken die Funktion als Container, ihre Trigger werden ersetzt. Dieses Tutorial bewertet eine kleine Umgebung mit einer FC-3.0-Funktion und einer älteren FC-Funktion, liest die Ausgabedateien und listet auf, was Sie neu bauen, bevor etwas auf STACKIT läuft.

Das Tutorial in fünf Schritten

  1. 1. Funktionen und Trigger auflisten

    Jede Funktion im Terraform ist eine Einheit. Trigger wie HTTP-, Timer- oder OSS-Ereignis-Trigger stehen nicht in der Demo-Umgebung; holen Sie sie aus der Alibaba-Cloud-Konsole oder Ihrem eigenen Terraform. Der Lauf sagt, dass sie ersetzt werden, und bildet sie nicht für Sie ab.

  2. 2. Die Bewertung ausführen

    Führen Sie den Befehl unten im Ordner mit dem Terraform aus. Der Lauf fand vier Ressourcen und vier Einheiten.

  3. 3. Klasse und Begründung lesen

    Beide Funktionen sind CONTAINERIZE mit Konfidenz MEDIUM. Die Begründung ist für beide Ressourcentypen gleich, fcv3 und die ältere fc-Funktion; beide folgen also einem Weg.

  4. 4. Jede Funktion als Container verpacken

    Schreiben Sie ein Image, das einen HTTP-Server und Ihren Handler ausführt. Alibaba Cloud dokumentiert dieselbe Form für die eigenen Custom Container, und das hilft: Code, der schon an einem Port lauscht, zieht mit wenig Änderung um.

  5. 5. Laufzeit auf STACKIT wählen

    SKE, wenn Sie bereits Kubernetes betreiben, eine Cloud-Foundry-Docker-App, wenn Ihre Teams so ausliefern. Der Lauf nennt beide und überlässt die Wahl Ihren Plattformarchitekten. Die STACKIT-Seite zu Containern und Buildpacks in Cloud Foundry beschreibt das Staging mit Buildpacks und sagt nicht, ob sich ein fertiges Container-Image pushen lässt; klären Sie das mit STACKIT, bevor Sie Cloud Foundry für das Image wählen.

Zwei Funktionen, ein Bucket und ein Log-Projekt, bewertet

Eine kleine Alibaba-Cloud-Umgebung, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links die beiden Funktionsblöcke der Eingabe, rechts das Ergebnis des Laufs, ein Auszug aus assessment.json mit den Werten, wie der Lauf sie geschrieben hat. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.

Beispieleingabemain.tf
resource "alicloud_fcv3_function" "thumbnail" {
  function_name = "thumbnail"
  runtime       = "python3.12"
  handler       = "index.handler"
  memory_size   = 512
  timeout       = 60
  environment_variables = {
    TARGET_BUCKET = "shop-uploads-eu"
  }
}

resource "alicloud_fc_function" "legacy_notify" {
  service     = "shop"
  name        = "notify"
  runtime     = "nodejs18"
  handler     = "index.handler"
  memory_size = 256
  timeout     = 30
}
StackToIT-Bewertungassessment.json
[
  {
    "id": "alicloud_fcv3_function.thumbnail",
    "result": {
      "class": "CONTAINERIZE",
      "confidence": "MEDIUM",
      "target": {
        "service": "SKE workload (or Cloud Foundry Docker app)"
      },
      "reason": "STACKIT has no function service. Package the function as a container for SKE or Cloud Foundry, and replace its triggers."
    }
  },
  {
    "id": "alicloud_fc_function.legacy_notify",
    "result": {
      "class": "CONTAINERIZE",
      "confidence": "MEDIUM",
      "target": {
        "service": "SKE workload (or Cloud Foundry Docker app)"
      },
      "reason": "STACKIT has no function service. Package the function as a container for SKE or Cloud Foundry, and replace its triggers."
    }
  },
  {
    "id": "alicloud_log_project.functions",
    "result": {
      "class": "RECONFIGURE",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT Logs"
      }
    }
  },
  {
    "id": "alicloud_oss_bucket.uploads",
    "result": {
      "class": "RECONFIGURE",
      "confidence": "MEDIUM",
      "target": {
        "service": "STACKIT Object Storage"
      },
      "reason": "An OSS bucket becomes a STACKIT Object Storage bucket with an S3 API. Applications that use the OSS SDK change their client; lifecycle, replication and access settings need review."
    }
  }
]
  • Ein Weg für zwei Ressourcentypen

    alicloud_fcv3_function und alicloud_fc_function erhalten dieselbe Klasse, dasselbe Ziel und dieselbe Begründung.

  • Die Laufzeit wird zur Wahl des Basis-Images

    python3.12 und nodejs18 sind Laufzeitnamen von Function Compute. Bei STACKIT werden sie zum Basis-Image, das Sie für den Container wählen. Ebenso wird memory_size (512 und 256) zu einem Speicherlimit des Containers und timeout (60 und 30 Sekunden) zu einem Request-Timeout an Ingress oder Load Balancer. Diese Übersetzung liegt bei Ihnen; der Lauf überträgt die Werte nicht.

  • Die Nachbarn ziehen anders um

    Der Bucket ist RECONFIGURE nach STACKIT Object Storage mit S3-API, das Log-Projekt RECONFIGURE nach STACKIT Logs. Anwendungen mit dem OSS-SDK ändern ihren Client.

Befehl und Ausgabedateien

Der Lauf wurde im Eingabeordner gestartet; der Ausgabeordner liegt daneben, daher ../out. --offline unterbindet Netzwerkanfragen; --no-validate überspringt die OpenTofu-Validierung der Quelle. Die Demo-Eingabe selbst wurde also nicht mit OpenTofu geprüft.

Befehlshell
# im Eingabeordner der Demo ausgeführt; der Ausgabeordner liegt daneben
stacktoit assess . ../out --offline --no-validate

# als Nächstes öffnen
../out/assessment.json
../out/migration/data-movement.md
../out/execution/manual/actions.md
Wellen in technical-sequencing.mdtechnical-sequencing.md
## Wave 1 — 4 unit(s)

| Unit | Class | Target |
|---|---|---|
| `alicloud_fc_function.legacy_notify` | CONTAINERIZE / MEDIUM | SKE workload (or Cloud Foundry Docker app) |
| `alicloud_fcv3_function.thumbnail` | CONTAINERIZE / MEDIUM | SKE workload (or Cloud Foundry Docker app) |
| `alicloud_log_project.functions` | RECONFIGURE / MEDIUM | STACKIT Logs |
| `alicloud_oss_bucket.uploads` | RECONFIGURE / MEDIUM | STACKIT Object Storage |
  • Alle vier in einer Welle

    Die Funktion nennt den Bucket nur als Zeichenkette, TARGET_BUCKET = "shop-uploads-eu". Eine Zeichenkette ist keine Referenz; der Lauf sieht daher keine Abhängigkeit und legt alle vier Einheiten in Welle 1. Kommt es Ihnen auf die Reihenfolge an, etwa den Bucket zuerst, legen Sie sie selbst im Migrationsplan fest.

  • Der Bucket hält Daten

    migration/data-movement.md führt den Bucket mit dem Verfahren UNKNOWN und dem Status DECISION_REQUIRED. Die Funktionen stehen dort nicht, weil eine Funktion selbst keine Daten hält.

So wird die Function-Compute-Umgebung zugeordnet

Alibaba-Cloud-RessourceSTACKIT-ZielMigrationsklasse
Function-Compute-3.0-Funktion (alicloud_fcv3_function)SKE-Workload oder Cloud-Foundry-Docker-AppContainerisieren
Function-Compute-Funktion (alicloud_fc_function)SKE-Workload oder Cloud-Foundry-Docker-AppContainerisieren
OSS-BucketSTACKIT Object Storage mit S3-APIRekonfigurieren
Simple-Log-Service-ProjektSTACKIT LogsRekonfigurieren

Klassen, wie der Lauf sie festgelegt hat. Die Begründung beider Funktionen lautet: STACKIT hat keinen Funktionsdienst, also verpacken Sie die Funktion als Container und ersetzen ihre Trigger.

Was Sie neu bauen, bevor etwas läuft

Aussagen zu Function Compute, SKE und STACKIT Logs stammen von den unter Quellen genannten Seiten, gelesen am Tag der Erstellung.

  • Ein HTTP-Server im Image

    Ein Function-Compute-Custom-Container muss einen HTTP-Server enthalten, der auf 0.0.0.0 am konfigurierten Port lauscht, standardmäßig 9000, und binnen 120 Sekunden startet. Nutzen Ihre Funktionen die eingebauten Laufzeiten mit einem Handler wie index.handler, schreiben Sie diesen Server oder nehmen ein Framework, das den Handler über HTTP bereitstellt.

  • Trigger

    Ersetzen Sie jeden Trigger. Ein HTTP-Trigger wird zu einem Kubernetes Service mit Ingress oder zu einer Regel im Application Load Balancer; der STACKIT ALB unterstützt dafür Routing nach Host, Pfad, Header oder Query. Timer- und Ereignis-Trigger werden zu geplanten Jobs oder Consumern, die Sie schreiben. Das ist allgemeine Praxis, keine Ausgabe des Laufs.

  • Zustand und Dateien

    Die beschreibbare Schicht von Function Compute geht verloren, wenn der Container zerstört wird, und Alibaba Cloud rät zu NAS oder OSS für dauerhafte Daten. Bei STACKIT übernehmen ein Volume oder Object Storage diese Rolle.

  • Logs

    Die Standardausgabe eines Custom Containers landet im konfigurierten Simple-Log-Service-Projekt. Auf SKE sammeln Sie sie mit einem Log-Agenten in STACKIT Logs oder in Ihrem vorhandenen Stack; die STACKIT-Logs-Seite nennt Grafana Alloy, Fluentd, Fluent Bit und den OpenTelemetry Collector.

  • Skalierung und Kostenmodell

    Allgemeine Praxis: Ein Deployment auf SKE hat eine Replikazahl und läuft auf einem Node Pool; Parallelität, Startverhalten und Leerlaufkosten legen nun Sie fest. Bestimmen Sie die Mindestzahl an Replikas je Funktion und messen Sie unter Last.

Fragen, die Plattformteams stellen

Hat STACKIT einen Funktionsdienst?

Nein. Der Lauf hält fest, dass STACKIT keinen Funktionsdienst hat, und stuft beide Funktionen als CONTAINERIZE ein, mit SKE oder einer Cloud-Foundry-Docker-App als Ziel.

Wandelt StackToIT den Funktionscode um?

Nein. StackToIT liest Ihren Quellcode nicht und baut das Image nicht. Es stuft die Funktionsressource ein, nennt das Ziel und führt den manuellen Schritt auf.

Warum liegen alle vier Einheiten in Welle 1?

Die Umgebung enthält keine Referenzen untereinander. Der Bucket-Name in der Umgebungsvariable ist eine einfache Zeichenkette, die der Lauf nicht als Abhängigkeit liest.

Welches STACKIT-Produkt soll die Container betreiben?

Der Lauf nennt SKE und eine Cloud-Foundry-Docker-App und entscheidet keines von beiden. SKE liefert upstream-konformes Kubernetes; Standard-Kubernetes-Anwendungen lassen sich daher ohne Refactoring bereitstellen.

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.