ALIBABA CLOUD FUNCTION COMPUTE → STACKIT SKE · HANDLEIDING
Alibaba Function Compute migreren, van Terraform naar containers
STACKIT heeft geen functiedienst en StackToIT zegt dat in de reden die het vastlegt: een Function Compute-functie krijgt de klasse CONTAINERIZE, met SKE of een Cloud Foundry Docker-app als doel. U verpakt de functie als container en de triggers worden vervangen. Deze handleiding beoordeelt een kleine omgeving met één FC 3.0-functie en één oudere FC-functie, leest de uitvoerbestanden en noemt wat u herbouwt voordat er iets op STACKIT draait.
De handleiding in vijf stappen
1. Maak een lijst van de functies en hun triggers
Elke functie in Terraform is één eenheid. Triggers, zoals een HTTP-, timer- of OSS-eventtrigger, staan niet in de demo-omgeving. Verzamel ze dus uit de Alibaba Cloud-console of uw eigen Terraform. De run zegt dat ze worden vervangen en modelleert ze niet voor u.
2. Voer het assessment uit
Voer het onderstaande commando uit in de map met de Terraform. De run vond vier resources en vier eenheden.
3. Lees de klasse en de reden
Beide functies zijn CONTAINERIZE met zekerheidsniveau MEDIUM. De reden is voor de twee resourcetypen, fcv3 en de oudere fc-functie, dezelfde, dus ze volgen één pad.
4. Verpak elke functie als container
Schrijf een image waarin een HTTP-server en uw handler draaien. Alibaba Cloud documenteert dezelfde vorm voor de eigen custom containers, wat helpt: code die al op een poort luistert, kan met weinig aanpassing worden meegenomen.
5. Kies de runtime op STACKIT
SKE als u al Kubernetes draait, een Cloud Foundry Docker-app als uw teams op die manier deployen. De run noemt beide en laat de keuze aan uw platformarchitecten. De STACKIT-pagina over Cloud Foundry-containers en buildpacks beschrijft buildpack-staging en zegt niet of een kant-en-klaar containerimage kan worden gepusht; bevestig dat met STACKIT voordat u voor het image Cloud Foundry kiest.
Twee functies, een bucket en een logproject, beoordeeld
Een kleine Alibaba Cloud-omgeving, voor deze pagina geschreven en door StackToIT beoordeeld op 4 november 2026. Links: de twee functieblokken van de invoer. Rechts: het resultaat dat de run vastlegde, een fragment van assessment.json met de waarden zoals de run ze schreef. assessment.json staat op één regel, dus het paneel toont geselecteerde velden per eenheid, ingesprongen en genest zoals in het bestand, met ongewijzigde waarden.
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
}[
{
"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."
}
}
]Eén pad voor twee resourcetypen
alicloud_fcv3_function en alicloud_fc_function krijgen dezelfde klasse, hetzelfde doel en dezelfde reden.
De runtime wordt een keuze voor het basisimage
python3.12 en nodejs18 zijn runtimenamen van Function Compute. Op STACKIT worden ze het basisimage dat u voor de container kiest. Op dezelfde manier wordt memory_size (512 en 256) een geheugenlimiet die u op de container instelt en timeout (60 en 30 seconden) een requesttimeout die u op de ingress of load balancer instelt. Die vertaling is aan u; de run neemt deze waarden niet over.
De omliggende resources worden anders verplaatst
De bucket is RECONFIGURE naar STACKIT Object Storage met een S3-API en het logproject is RECONFIGURE naar STACKIT Logs. Applicaties die de OSS-SDK gebruiken, passen hun client aan.
Commando en uitvoerbestanden
De run is gestart vanuit de invoermap; de uitvoermap staat ernaast, vandaar ../out. --offline voorkomt netwerkverzoeken; --no-validate slaat de OpenTofu-validatie van de bron over, dus de demo-invoer zelf is niet door OpenTofu gevalideerd.
# gestart in de invoermap van de demo; de uitvoermap staat ernaast
stacktoit assess . ../out --offline --no-validate
# hierna te openen bestanden
../out/assessment.json
../out/migration/data-movement.md
../out/execution/manual/actions.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 één golf
De functie noemt de bucket alleen als string, TARGET_BUCKET = "shop-uploads-eu". Een string is geen verwijzing, dus de run ziet geen afhankelijkheid en plaatst alle vier de eenheden in golf 1. Is de volgorde voor u van belang, bijvoorbeeld eerst de bucket, dan legt u die zelf vast in het migratieplan.
De bucket is stateful
migration/data-movement.md noemt de bucket met het mechanisme UNKNOWN en de status DECISION_REQUIRED. De functies staan daar niet, omdat een functie zelf geen data bevat.
Hoe de Function Compute-omgeving wordt gekoppeld
| Alibaba Cloud-resource | STACKIT-doel | Migratieklasse |
|---|---|---|
| Function Compute 3.0-functie (alicloud_fcv3_function) | SKE-workload, of een Cloud Foundry Docker-app | Containerisatie |
| Function Compute-functie (alicloud_fc_function) | SKE-workload, of een Cloud Foundry Docker-app | Containerisatie |
| OSS-bucket | STACKIT Object Storage, met een S3-API | Herconfiguratie |
| Simple Log Service-project | STACKIT Logs | Herconfiguratie |
Klassen zoals de run ze bepaalde. De reden bij beide functies luidt: STACKIT heeft geen functiedienst, dus u verpakt de functie als container en vervangt de triggers.
Wat u herbouwt voordat er iets draait
Feiten over Function Compute, SKE en STACKIT Logs komen van de pagina's onder de bronnen, gelezen op de dag dat deze pagina is geschreven.
Een HTTP-server in het image
Een custom container van Function Compute moet een HTTP-server bevatten die op 0.0.0.0 luistert op de ingestelde poort, standaard 9000, en binnen 120 seconden start. Gebruiken uw functies de ingebouwde runtimes met een handler als index.handler, dan schrijft u die server zelf of gebruikt u een framework dat de handler via HTTP beschikbaar maakt.
Triggers
Vervang elke trigger. Een HTTP-trigger wordt een Kubernetes Service met een ingress of een regel op de Application Load Balancer, die de STACKIT ALB ondersteunt met routering op host, pad, header of query. Timer- en eventtriggers worden geplande jobs of consumers die u zelf schrijft. Dit is algemene praktijk, geen uitvoer van de run.
State en bestanden
De beschrijfbare laag van Function Compute gaat verloren wanneer de container wordt verwijderd en Alibaba Cloud adviseert NAS of OSS voor persistente data. Gebruik op STACKIT op dezelfde manier een volume of Object Storage.
Logs
De standaarduitvoer van een custom container gaat naar het Simple Log Service-project dat u configureert. Op SKE verzamelt u die met een logagent in STACKIT Logs of uw bestaande stack; de pagina over STACKIT Logs noemt Grafana Alloy, Fluentd, Fluent Bit en de OpenTelemetry Collector.
Schaal en kostenmodel
Algemene praktijk: een Deployment op SKE heeft een aantal replica's en draait op een node pool. Gelijktijdigheid, opstartgedrag en kosten bij stilstand stelt u dus nu zelf in. Bepaal per functie het minimale aantal replica's en meet onder belasting.
Vragen van platformteams
Heeft STACKIT een functiedienst?
Nee. De run vermeldt dat STACKIT geen functiedienst heeft en geeft beide functies de klasse CONTAINERIZE, met SKE of een Cloud Foundry Docker-app als doel.
Zet StackToIT de functiecode om?
Nee. Het leest uw broncode niet en bouwt het image niet. Het classificeert de functieresource, noemt het doel en toont de handmatige stap.
Waarom zitten alle vier de eenheden in golf 1?
De omgeving bevat geen verwijzingen tussen de eenheden. De bucketnaam in de omgevingsvariabele is een gewone string, die de run niet als afhankelijkheid leest.
Welk STACKIT-product moet de containers draaien?
De run noemt SKE en een Cloud Foundry Docker-app en beslist geen van beide. SKE biedt upstream Kubernetes, zodat standaard Kubernetes-applicaties zonder refactoring kunnen worden gedeployd.
Bronnen
Uw volgende stap: STACKIT.
Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.
Laat uw gegevens achter, onze specialisten nemen contact met u op.
Liever zelf een e-mail sturen? connect@stacktoit.com
Hartelijk dank.
Uw verzoek is bij ons binnengekomen. Onze specialisten nemen contact met u op.