AWS → STACKIT · CHECKLIST BACKUP EN DR
AWS Backup en disaster recovery op STACKIT: de checklist
AWS Backup is één service met plannen, vaults en selecties; STACKIT maakt back-ups per service. Daar gaat het bij back-upmigraties mis: een retentieregel die in één plan stond, zit nu in het back-upschema van de server, de volume-automatisering, de databaseinstellingen en de bucket. Deze checklist doorloopt de fasen van inventarisatie tot de eerste hersteltest en noemt het bestand van een StackToIT-run dat elk antwoord bevat.
Inventarisatie: vind elke back-upregel waarop u vertrouwt
Voer eerst het assessment uit. De demo-omgeving voor deze pagina, beoordeeld op 4 november 2026, heeft 10 resources in 6 eenheden: 3 RECONFIGURE (het back-upplan, het snapshotbeleid, de EC2-instance), 1 REPLATFORM (de RDS-database), 1 DIRECT (de replicabucket) en 1 MANUAL_REVIEW (de bucket met versiebeheer en replicatie). Deze controles zorgen ervoor dat niets wat data beschermt, wordt overgeslagen.
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Som elk back-upplan, elke vault en elke selectie op, en welke resources elke selectie bereikt. | assessment.json, eenheid van het plan | U weet of een tagselectie een server, een volume of een database bereikt. |
| Som snapshotbeleid (Data Lifecycle Manager) op, met tags, schema's en aantallen. | assessment.json, eenheid van het beleid | Elk beleid is gekoppeld aan een volume of een server. |
| Lees de ingebouwde retentie van elke database en het back-upvenster. | assessment.json, eenheid van de database | Retentiedagen en het back-upvenster zijn vastgelegd. |
| Som buckets op met versiebeheer, lifecycleregels en replicatie. | terraform/storage.tf-commentaren, terraform/s3api/ | Elke bucket met een replicatieregel staat op een lijst. |
| Leg het herstelpunt en de hersteltijd vast die elke applicatie nodig heeft. | migration/data-movement.md (de run vermeldt er geen, tenzij u ze opgeeft) | Getallen van de eigenaar van de applicatie, niet geraden. |
Ontwerp: bepaal wat de centrale service vervangt
De run koppelt per service, dus de ontwerpbeslissingen zijn ook per service.
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Kies welke servers een back-upschema krijgen; u moet er een server voor opgeven. | terraform/backup.tf, variabele voor de server-id | Voor elke beschermde server is een server-id ingesteld. |
| Bepaal hoe volumes worden beschermd: snapshots geselecteerd op label, of back-ups. | terraform/backup.tf, volume-automatisering | Labels op STACKIT-volumes komen overeen met de selector. |
| Bepaal het aantal snapshots tegen de gedocumenteerde limiet per volume. | commentaar boven de volume-automatisering | De retentie die u daarboven nodig hebt, wordt door back-ups gedekt. |
| Bepaal wat een vault lock of een immutable vault vervangt. | Reden van de back-upeenheid in assessment.json | Een schriftelijk antwoord: object lock op een bucket, offline kopie of geaccepteerde leemte. |
| Bepaal het DR-doel: tweede STACKIT-regio, tweede bucket of een andere locatie. | terraform/storage.tf, ledgerregel voor geo-replicatie | Een benoemd doel en een eigenaar. |
Bouw: het back-upplan wordt een back-upschema voor de server
Links: de vault, het plan en de tagselectie. Rechts: de twee serverback-upblokken van het concept met de twee commentaarregels erboven die uitleggen wat de selectie bereikt en wat niet wordt overgenomen; de overige commentaarregels zijn weggelaten. De dagelijkse regel van 03:00 met 35 dagen wordt een rrule en retention_period = 35.
resource "aws_backup_vault" "main" {
name = "company-vault"
}
resource "aws_backup_plan" "daily" {
name = "daily-35d"
rule {
rule_name = "daily"
target_vault_name = aws_backup_vault.main.name
schedule = "cron(0 3 * * ? *)"
lifecycle {
delete_after = 35
}
}
}
resource "aws_backup_selection" "tagged" {
name = "tagged-resources"
plan_id = aws_backup_plan.daily.id
iam_role_arn = "arn:aws:iam::111122223333:role/backup-role"
selection_tag {
type = "STRINGEQUALS"
key = "backup"
value = "daily"
}
}# no volume automation is drafted for the selection tagged-resources of aws_backup_plan.daily: it reaches no volume in the scan.
# NOT CARRIED (aws_backup_plan.daily): rule.target_vault_name — STACKIT Server Backup keeps backups per server and has no vault: the vault a rule writes to, aws_backup_vault.main (company-vault), is not carried.
resource "stackit_server_backup_enable" "daily" {
project_id = var.project_id
server_id = var.daily_server_id
}
resource "stackit_server_backup_schedule" "daily" {
project_id = var.project_id
server_id = var.daily_server_id
name = "daily-35d-daily"
rrule = "DTSTART;TZID=UTC:20200101T030000 RRULE:FREQ=DAILY;INTERVAL=1"
enabled = true
backup_properties = {
name = "daily-35d-daily"
retention_period = 35
}
depends_on = [stackit_server_backup_enable.daily]
}Eerst inschakelen, dan plannen
Het concept schrijft een stackit_server_backup_enable en laat het schema ervan afhangen. STACKIT documenteert serverback-ups als crash-consistente back-ups van de volumes die aan een server zijn gekoppeld, met een retentieperiode die u kiest.
De tagselectie, opgelost
De run lost backup=daily op tegen de scan: het schema beschermt aws_instance.app en de RDS-database met dezelfde tag krijgt in plaats daarvan de back-up van zijn eigen service. Het schema neemt nog steeds een variabele voor de server-id: stel die in op de STACKIT-server van aws_instance.app en herhaal het schema voor elke andere server die de tag dekte.
Geen vault
STACKIT Server Backup bewaart back-ups per server. De vault, de naam ervan en de IAM-rol van de selectie hebben geen tegenhanger en staan als niet overgenomen vermeld.
Bouw: het snapshotbeleid wordt een volume-automatisering
Links: het beleid van de Data Lifecycle Manager. Rechts: de volume-automatisering van het concept met de ene commentaarregel die het aantal snapshots controleert; de overige commentaarregels zijn weggelaten. De doeltag wordt een labelselector, de createregel van 24 uur een rrule en het aantal te bewaren snapshots een count-beleid.
resource "aws_dlm_lifecycle_policy" "ebs" {
description = "Daily EBS snapshots"
execution_role_arn = "arn:aws:iam::111122223333:role/dlm-role"
state = "ENABLED"
policy_details {
resource_types = ["VOLUME"]
target_tags = {
snapshot = "true"
}
schedule {
name = "daily"
create_rule {
interval = 24
interval_unit = "HOURS"
times = ["03:00"]
}
retain_rule {
count = 7
}
}
}
}# Check the count: the policy keeps 7 snapshots for schedule daily; the documented limit is 6 snapshots per volume (docs.stackit.cloud, introduction to the server), so the days beyond are not covered by snapshots — backups (daily retention, default 14 days, `backupRetentionPolicies`) are the longer-retention path; whether the Automation Service enforces the number is not documented, verify it on the first run.
resource "stackit_volume_automation" "ebs" {
project_id = var.project_id
template_id = var.ebs_automation_template_id
name = "daily-ebs-snapshots-daily"
description = "Daily EBS snapshots"
input = jsonencode({
kind = "VolumeRecoveryPointManagement"
inheritVolumeLabels = false
snapshotRetentionPolicy = {
kind = "count"
value = 7
}
volumeLabelSelector = "snapshot=true"
})
triggers = {
schedule = {
rrule = "DTSTART;TZID=UTC:20200101T030000 RRULE:FREQ=DAILY;INTERVAL=1"
}
}
}Het aantal van 7
De run toetst de 7 snapshots van het beleid aan een gedocumenteerde limiet van 6 per volume en meldt dat de dagen daarboven niet door snapshots worden gedekt. Dagelijkse back-ups in dezelfde automatisering (backupRetentionPolicies) zijn de route voor langere retentie, en of de limiet wordt afgedwongen, controleert u bij de eerste run.
Opt-in-resource
De vastgezette provider markeert stackit_volume_automation als resource die nog kan wijzigen, en het concept schakelt die opt-in in terraform.tf in. Uw team beslist of het die accepteert of de automatisering op een andere manier aanmaakt.
Labels moeten bestaan
De automatisering selecteert op label. Zet snapshot=true op de STACKIT-volumes die het nodig hebben, anders wordt er geen snapshot gemaakt.
Bouw: databaseretentie en point-in-time recovery
Links: de RDS-instance met 14 dagen retentie, een back-upvenster en Multi-AZ. Rechts: de PostgreSQL Flex-instance van het concept met vier van de commentaarregels erboven, ongewijzigd; de overige commentaarregels zijn weggelaten.
resource "aws_db_instance" "orders" {
identifier = "orders-db"
engine = "postgres"
engine_version = "16.4"
instance_class = "db.m6g.large"
allocated_storage = 100
username = "app"
password = var.db_password
backup_retention_period = 14
backup_window = "02:00-02:30"
multi_az = true
skip_final_snapshot = false
final_snapshot_identifier = "orders-db-final"
tags = {
backup = "daily"
}
}# recovery window: the source restores to any point within 14 days, as late as about five minutes before now (RDS uploads transaction logs to S3 every five minutes).
# PostgreSQL Flex restores to an arbitrary point of its available backups (transaction logs are on by default) into a cloned instance, and keeps them retention_days = 32.
# LEDGER backup retention: 14 days → retention_days = 32 — TRANSFORMED
# LEDGER high availability: standby / multi-node → flavor_id = "2.16-replica" (a replica flavor: three nodes that mirror each other; no STACKIT page states the zone of each node or how a failover works, so a zone failure or an automatic takeover is not claimed) — TRANSFORMED
resource "stackit_postgresflex_instance" "orders" {
project_id = var.project_id
name = "orders-db"
version = "16"
flavor_id = "2.16-replica"
storage = {
class = var.postgresflex_storage_class
size = 108
}
backup_schedule = "0 2 * * *"
network = {
acl = var.orders_allowed_cidrs
access_scope = var.orders_access_scope == "SNA" ? "SNA" : null
}
retention_days = 32
}Retentie verandert
Het concept stelt retention_days in op 32 en backup_schedule op 02:00 per nacht, het begin van het venster 02:00-02:30 in de bron; er staat geen commentaar over hoe de tijd is afgeleid. De run markeert de stap van 14 naar 32 als getransformeerd en meldt dat niet is aangetoond dat de twee herstelvensters gelijk zijn.
Herstel maakt een kloon
Point-in-time recovery op PostgreSQL Flex herstelt naar een nieuwe, gekloonde instance, dus het herstelrunbook omvat het omschakelen van de applicatie naar die instance.
De laatste snapshot wordt niet overgenomen
De laatste snapshot van de bron heeft bij verwijdering geen tegenhanger. Exporteer eerst de data als die de cutover moet overleven. De eigen documentatie van STACKIT waarschuwt bovendien dat het verwijderen van een instance zonder instance protection definitief is.
Bouw: bucketversiebeheer en replicatie
Links: versiebeheer, de replicabucket en de replicatieregel. Rechts: de bucket van het concept met de twee NOT CARRIED-commentaren (het commentaar over replicatie gevolgd door de bijbehorende beslissingsregel) en de ledgerregel voor geo-replicatie; de overige commentaarregels zijn weggelaten. Versiebeheer wordt buiten Terraform overgenomen: de run schrijft terraform/s3api/documents/versioning.json met Status Enabled, toe te passen via de S3 API voordat het eerste object binnenkomt.
resource "aws_s3_bucket_versioning" "documents" {
bucket = aws_s3_bucket.documents.id
versioning_configuration {
status = "Enabled"
}
}
resource "aws_s3_bucket" "documents_replica" {
bucket = "acme-documents-replica"
}
resource "aws_s3_bucket_replication_configuration" "documents" {
bucket = aws_s3_bucket.documents.id
role = "arn:aws:iam::111122223333:role/s3-replication"
rule {
id = "all"
status = "Enabled"
destination {
bucket = aws_s3_bucket.documents_replica.arn
}
}
}# NOT CARRIED (aws_s3_bucket_replication_configuration.documents): role = arn:aws:iam::111122223333:role/s3-replication, rule — stackit_objectstorage_bucket has no replication attribute (pinned provider). STACKIT's supported-operations page lists Put, Get and Delete Bucket Replication, but no STACKIT page describes replication targets, cross-region behaviour or the role the source assumes, so whether replication between STACKIT buckets works is UNKNOWN (not observed); the source's destination, role, storage class and filter do not carry over.
# Decision: probe `put-bucket-replication` between two STACKIT buckets before relying on it, or replace it with a scheduled sync (rclone) or application writes to both buckets.
# NOT CARRIED (aws_s3_bucket_versioning.documents): versioning_configuration.status = Enabled — stackit_objectstorage_bucket has no versioning attribute (pinned provider), but STACKIT Object Storage supports versioning through its S3 API (the provider lacks it, STACKIT does not). … Once enabled, versioning cannot be disabled on STACKIT, only suspended (docs manage-bucket-versioning). (shortened: the whole reason is in the trace of this block)
# LEDGER geo-replication: second region → none — sync to a second bucket if required — UNSUPPORTED
resource "stackit_objectstorage_bucket" "documents" {
project_id = var.project_id
name = "acme-documents-primary"
}Versiebeheer gaat maar één kant op
De handleiding van STACKIT voor versiebeheer stelt het in met aws s3api put-bucket-versioning en vermeldt dat het na inschakelen niet meer kan worden uitgeschakeld, alleen worden opgeschort.
Historie vraagt om een eigen kopie
Een gewone sync kopieert alleen huidige versies. Het document voor het kopiëren van data schrijft eerdere versies op volgorde van versie-id, oudste eerst, en merkt op dat versie-id's van de bron niet kunnen worden behouden.
Replicatie is een proef of een sync
De provider kent geen replicatieattribuut. STACKIT noemt de replicatiebewerkingen voor buckets, maar de run vond geen STACKIT-pagina over replicatiedoelen of cross-regiogedrag. De run stelt daarom voor put-bucket-replication tussen twee STACKIT-buckets te proberen of een geplande sync te gebruiken.
Data en cutover: houd de bescherming doorlopend
Back-ups aan beide kanten moeten overlappen tot het doel zich heeft bewezen.
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Laat AWS Backup en DLM draaien tot de eerste STACKIT-back-up van elke resource is voltooid (praktijk). | Schema's in terraform/backup.tf en data.tf | Eén voltooide STACKIT-back-up per beschermde resource. |
| Maak vóór de schrijfstop een laatste back-up van elke brondatabase (praktijk). | Stap voor de schrijfstop in terraform/handover/database-orders/data-move.md | De back-up-id is vastgelegd. |
| Kopieer buckets met versiebeheer samen met hun versiehistorie als de historie ertoe doet. | terraform/s3api/documents/data-copy.md | Het aantal versies per sleutel komt aan beide kanten overeen. |
| Vervang bucketreplicatie door een geplande sync of schrijfacties van de applicatie, of probeer eerst replicatie tussen twee STACKIT-buckets. | commentaar in terraform/storage.tf | Een geteste voorziening, geen aanname. |
| Leg de rollbackgrens vast: wanneer een rollback data verliest die op het doel is geschreven. | terraform/handover/database-orders/data-move.md en terraform/s3api/documents/data-copy.md (controle rollback-limit) | Een datum en een eigenaar zijn vastgelegd. |
Nazorg: bewijs dat u kunt herstellen
Een back-up die u nooit hebt hersteld, is een vrome hoop.
| Controle | Waar het antwoord staat | Klaar wanneer |
|---|---|---|
| Herstel één volumeback-up van de server naar een nieuw volume en lees er bestanden uit; STACKIT documenteert dit gedeeltelijke herstel. | Uw eigen runbook, gebaseerd op het schema in terraform/backup.tf | Controle van bestanden en applicatie slaagt; de tijd is vastgelegd. |
| Herstel de database naar een tijdstip als kloon. | terraform/data.tf-commentaren | Het laatste herstelbare punt komt overeen met het herstelpunt dat u nodig hebt. |
| Herstel een oude objectversie uit de bucket. | terraform/s3api/documents/ | De versie wordt teruggegeven. |
| Verwijder tijdelijke toegang die voor de migratie is gebruikt en faseer AWS Backup uit na de retentie die u hebt bepaald. | execution/manual/actions.md | Bronvault en -plannen zijn op een vastgelegde datum verwijderd. |
Vragen over back-upmigratie
Is er een STACKIT-equivalent van AWS Backup?
Volgens de reden van de run is er geen centrale back-upservice zoals AWS Backup. Elke service heeft een eigen voorziening: back-upschema's voor servers, volume-automatiseringen, de ingebouwde back-ups van managed databases en snapshots voor bestandsopslag.
Kan ik een immutable vault krijgen?
De run meldt dat de isolatie van de back-ups van de Automation Service geen lock-, write-once- of immutability-instelling is. De Object Storage-documentatie van STACKIT beschrijft object lock met compliance-retentie tot 365 dagen voor buckets, wat een andere bouwsteen is.
Maakt of herstelt StackToIT back-ups?
Nee. StackToIT leest Terraform en schrijft een concept, scripts en documenten. Back-ups en herstel voert uw team uit.
Wordt S3-bucketreplicatie overgenomen?
Nee. stackit_objectstorage_bucket heeft geen replicatieattribuut. De run stelt voor replicatie tussen twee STACKIT-buckets te proberen of een geplande sync te gebruiken, en legt het kopiëren naar een tweede regio vast als niet ondersteund.
Waarom vraagt het concept om een server-id?
Omdat een back-upschema voor een STACKIT-server bij precies één server hoort, niet bij een tag. De run loste de tagselectie op naar aws_instance.app maar laat de id als variabele staan; stel die in op de STACKIT-server die die instance vervangt.
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.