AWS → STACKIT · CHECKLIST
Migratiechecklist AWS naar STACKIT
Gebruik deze lijst om een AWS-omgeving naar STACKIT te brengen zonder het overzicht te verliezen. Elke controle noemt het bestand in de uitvoermap van StackToIT dat het antwoord bevat, zodat een reviewer die kan afvinken tegen bewijs in plaats van tegen het geheugen. De voorbeelden komen uit een demo-omgeving van negen AWS-eenheden en uit de gepubliceerde Retail Store-run.
Hoe de checklist is opgebouwd
Zes fasen, in de volgorde waarin het werk plaatsvindt. De bestandsnamen zijn paden binnen de uitvoermap van een assessment.
Bewijs, geen mening
Een controle is afgerond wanneer het bestand ernaast dat bevestigt, of wanneer een persoon het antwoord in de reviewbestanden heeft vastgelegd. StackToIT leest en schrijft bestanden en wijzigt niets in welke cloud dan ook.
Op de schaal van een echte run
De Retail Store-run omvat 282 Terraform-resources en 44 migratie-eenheden. Uw omgeving krijgt eigen aantallen; de controles blijven dezelfde.
Beslissingen horen bij de lijst
Openstaande beslissingen blokkeren stappen van het plan. Een checklist die ze overslaat, vinkt vakjes af waaraan het plan zich niet houdt.
Fase 1 · Inventarisatie
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| De hele omgeving is gelezen: elke rootmodule, childmodule en variabelenbestand | console.txt en assessment.json (gescande resources, migratie-eenheden) | Het aantal eenheden komt overeen met wat uw team verwacht; ontbrekende modules zijn verklaard |
| Variabelen die bepalen of een resource bestaat, zijn bekend | console.txt (regel visibility), assessment.json (voorwaardelijke eenheden) | Geen enkele eenheid blijft voorwaardelijk door een variabele die u kunt opgeven; de Retail Store-run registreert 41 uitgeschakelde eenheden en 8 voorwaardelijke eenheden waarover alleen een plan beslist |
| De bron doorstaat de eigen controles | console.txt (Source checks) | De validatie is uitgevoerd, of u weet waarom niet (bijvoorbeeld een ontbrekend lockbestand voor dependencies) |
| Resources buiten Terraform zijn opgesomd | Uw inventaris; het optionele commando discover voegt alleen-lezen verzameling toe | In de console aangemaakte resources worden handmatig toegevoegd, omdat een assessment alleen ziet wat in de bestanden staat |
Fase 2 · Ontwerp
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Elke eenheid heeft een klasse en een doel | assessment.json, migration/source-target.csv | Geen eenheid is onverklaard; REDESIGN- en MANUAL_REVIEW-eenheden hebben een eigenaar |
| Openstaande beslissingen zijn opgesomd en hebben een eigenaar | executive/decisions.md, decisions.json, review/decisions.yaml | Elke beslissing die een stap van het plan blokkeert, heeft een antwoord of een datum |
| De standaardwaarden die het concept koos, zijn bevestigd of gewijzigd | executive/decisions.md (te bevestigen standaardwaarden) | Voor elke standaardwaarde van publiek endpoint, dimensionering en egress is een antwoord vastgelegd |
| Wat het concept niet overneemt, is begrepen | engineering/not-carried.csv, engineering/architect-report.md | Voor elke niet overgenomen eigenschap is er een beslissing of een geaccepteerd verlies |
| De landing zone is gedefinieerd | migration/landing-zone-requirements.md | Organisatie, project, regio en netwerkbereiken zijn afgestemd |
Hoe "niet overgenomen" eruitziet
engineering/not-carried-summary.csv van de demorun: één rij per eenheid met het aantal eigenschappen dat het concept niet kon overnemen. Een aantal groter dan nul is een ontwerpcontrole, geen fout.
unit,type,class,confidence,counted,properties_not_carried
aws_db_instance.orders,aws_db_instance,REPLATFORM,MEDIUM,yes,3
aws_instance.app,aws_instance,RECONFIGURE,MEDIUM,yes,2
aws_s3_bucket.uploads,aws_s3_bucket,RECONFIGURE,MEDIUM,yes,1
aws_secretsmanager_secret.api_key,aws_secretsmanager_secret,RECONFIGURE,MEDIUM,yes,1
aws_subnet.app_a,aws_subnet,RECONFIGURE,MEDIUM,yes,1
aws_subnet.app_b,aws_subnet,RECONFIGURE,MEDIUM,yes,1
aws_vpc.app,aws_vpc,RECONFIGURE,MEDIUM,no,Fase 3 · Bouw
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Vereiste services zijn ingeschakeld in het doelproject en de doelregio | terraform/README.md (Enable these services first) | De services die het concept gebruikt, zijn ingeschakeld; het portaal toont een uitgeschakelde service als niet ingeschakeld in uw regio |
| Variabelen zonder standaardwaarde hebben waarden | review/target-values.tfvars (de kopie van target-values-template.tfvars), terraform/variables.tf | project_id, toegangsscopes, client-CIDR's, machinetypen en opslagklassen zijn ingesteld |
| Het concept valideert tegen een testproject | terraform/README.md (init, validate, plan) | Een plan draait foutloos in een testproject; StackToIT voert apply nooit uit |
| De state wordt als secret behandeld | terraform/README.md (Secrets the provider writes into the state) | Opslag van en toegang tot de state zijn bepaald vóór de eerste apply |
| De apply-volgorde en de voorbereidende stappen worden gevolgd | execution/terraform/apply.md | Handmatige stappen en API-aanroepen die eerst moeten, zijn afgevinkt |
| Over opt-in-API-aanroepen is beslist | executive/decisions.md, execution/api/ | Elke aanroep van een API zonder vermelde releasestatus is vastgelegd als toegestaan of geweigerd |
Fase 4 · Data
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Elke stateful eenheid heeft een gekozen verplaatsingsmethode | migration/data-movement.md | Geen eenheid toont DECISION_REQUIRED |
| Omvang, wijzigingssnelheid en tolerantie voor downtime zijn vastgelegd | review/inputs.yaml (omvang van de dataset, downtime, RPO), migration/data-movement.md (lijst "Not known") | De onbekenden die het rapport noemt, zijn vervangen door uw cijfers |
| De methode is geoefend | Stap "data rehearsal" in execution/manual/actions.md | De verstreken tijd van elk onderdeel is vastgelegd en het venster voor de schrijfstop is daarop afgestemd |
| Secrets worden door een persoon gekopieerd | Secrets Manager-stappen in execution/manual/actions.md | De waarden staan in STACKIT Secrets Manager; het concept bevat ze nooit |
| De vergelijkingscontroles zijn afgestemd | migration/data-movement-plan.json (controles per asset) | Aantallen, lijsten of checksums zijn per opslag benoemd, met een eigenaar voor GO of NO-GO |
De datatabel en de controles vóór elke stap
Links: migration/data-movement.md. Elke eenheid toont DECISION_REQUIRED en de dataklasse, RPO en downtime zijn NOT_PROVIDED totdat u ze vastlegt. Rechts: de eerste regels van execution/verify/checks.md, een afvinkbare lijst die uit het plan wordt gegenereerd.
| Unit | Source service | Target service | Application | Mechanism | State | Data class | RPO | Downtime tolerance |
|---|---|---|---|---|---|---|---|---|
| aws_db_instance.orders | aws_db_instance | STACKIT PostgreSQL Flex | | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |
| aws_s3_bucket.uploads | aws_s3_bucket | STACKIT Object Storage | | UNKNOWN | DECISION_REQUIRED | NOT_PROVIDED | NOT_PROVIDED | NOT_PROVIDED |## Before each step
- [ ] `TF/stackit_network.app_a` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_network.app_b` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_secretsmanager_instance.migrated_secrets` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.
- [ ] `TF/stackit_secretsmanager_user.migration` · `variable-supplied` `variable=project_id` — The variable `project_id` has a value.Fase 5 · Cutover
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| De applicaties die elke opslag gebruiken, zijn opgesomd | Cutoverstappen in execution/manual/actions.md | Het plan leest niet welke applicaties een opslag gebruiken; hun eigenaren sommen ze op |
| Het venster en de schrijfstop zijn afgestemd | Stappen voor de schrijfstop; de invoer voor het onderhoudsvenster in review/inputs.yaml | De eigenaar heeft een venster vastgelegd; het plan verzint er geen |
| DNS heeft een verlaagde TTL en een rollback | migration/technical-sequencing.md (stappen voor zonedelegatie) | De TTL is verlaagd en verlopen, de antwoorden zijn gecontroleerd op de nameservers van het doel |
| De beslisstap voor rollback heeft een eigenaar | Beslisstap voor rollback in execution/manual/actions.md | Een benoemde eigenaar legt GO of ROLLBACK vast |
| Zie het runbook voor cutover en rollback voor de stappen in volgorde | Runbook voor cutover en rollback | Elke stap heeft een eigenaar, een controle en een weg terug |
Fase 6 · Na de cutover
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| De voortgang is vastgelegd | review/progress.yaml | Elke stap is DONE, FAILED of WAIVED, met een eigenaar en een datum |
| Herstel is aangetoond | Stap voor de restore-controle van elke database | Een point-in-time clone is gelezen en vergeleken vóór de GO |
| De bron wordt in de juiste volgorde uitgefaseerd | Ontmantelingsstappen in execution/manual/actions.md | Uitfasering is pas na de GO gestart; de laatste back-ups zijn bewaard gedurende de periode die u hebt bepaald |
| Het resultaat is ongewijzigd gearchiveerd | Uitvoermap en het bijbehorende manifest.json | De map doorstaat het commando verify voordat die wordt gedeeld of gearchiveerd |
Waar u de voortgang vastlegt
review/progress.yaml gaat uit van progress-template.yaml. Elk item is met een hash aan de stap gekoppeld; als een latere run de stap wijzigt, wordt uw item als verouderd getoond in plaats van stilzwijgend overgenomen.
entries:
# MANUAL critical-semantic - aws_subnet.app_a
- action_id: "MAN/semantic/aws_subnet.app_a/availability-zone"
contract_sha256: "sha256:466db94bafa1a6993c03688825aff955665d3be7fa1f3d4387e6c6a0c7d4ac72"
state: NOT_STARTED
# MANUAL critical-semantic - aws_subnet.app_a
- action_id: "MAN/semantic/aws_subnet.app_a/effective-route-table"Vragen die teams stellen
Kan de checklist alleen op basis van het rapport worden afgevinkt?
Alleen voor de ontwerpfasen. Bouw, data, cutover en nazorg vergen werk in uw eigen omgeving; de bestanden vertellen wat u moet doen en wanneer iets als klaar telt, en u legt het resultaat vast in de reviewbestanden.
Heb ik eerst een volledige AWS-inventaris nodig?
Het assessment leest Terraform. Voor vergelijking met het live account verzamelt het commando discover een alleen-lezen inventaris met uw lokale AWS-inloggegevens; het assessment zelf maakt nooit verbinding met AWS.
Waar tonen managed databases en buckets hun risico's?
In de bestanden over dataverplaatsing en in de lijst met niet overgenomen eigenschappen: engineversies, publieke of private endpoints, bucketinstellingen die via een API lopen in plaats van via Terraform, en versleutelingsverklaringen die onbekend zijn.
Is elk vakje verplicht?
Nee. WAIVED bestaat niet voor niets in het voortgangsjournaal, maar een ontheffing vereist een notitie, zodat zichtbaar blijft wat is weggelaten.
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.