AWS TERRAFORM → STACKIT TERRAFORM
AWS Terraform to STACKIT Terraform
StackToIT reads your AWS Terraform the way your engineers wrote it, modules and variables included, and writes STACKIT provider code your platform team can review, version and apply through its own pipeline.
One real conversion: Aurora PostgreSQL to PostgreSQL Flex
The orders database of the AWS Retail Store Sample App, on the left exactly as AWS publishes it, on the right exactly as StackToIT wrote it in the published run.
module "orders_rds" {
source = "terraform-aws-modules/rds-aurora/aws"
version = "7.7.1"
name = "${var.environment_name}-orders"
engine = "aurora-postgresql"
engine_version = "15.10"
instance_class = "db.t3.medium"
instances = {
one = {}
}
vpc_id = var.vpc_id
subnets = var.subnet_ids
allowed_security_groups = concat(var.allowed_security_group_ids, [var.orders_security_group_id])
master_password = random_string.orders_db_master.result
create_random_password = false
database_name = "orders"
storage_encrypted = true
apply_immediately = true
skip_final_snapshot = true
create_db_parameter_group = true
db_parameter_group_name = "${var.environment_name}-orders"
db_parameter_group_family = "aurora-postgresql15"
create_db_cluster_parameter_group = true
db_cluster_parameter_group_name = "${var.environment_name}-orders"
db_cluster_parameter_group_family = "aurora-postgresql15"
tags = var.tags
}resource "stackit_postgresflex_instance" "dependencies_orders_rds_this" {
project_id = var.project_id
name = "retail-store-ecs-orders"
version = "15"
flavor_id = "2.4"
storage = {
class = var.postgresflex_storage_class
size = var.orders_rds_storage_size
}
backup_schedule = "0 2 * * *"
network = {
acl = coalescelist(var.orders_rds_allowed_cidrs, stackit_ske_cluster.retail_app_ecs_cluster.egress_address_ranges)
access_scope = var.orders_rds_access_scope == "SNA" ? "SNA" : null
}
retention_days = 32
}Engine and version carried over
aurora-postgresql 15 becomes a PostgreSQL Flex instance on version 15, named after the source.
Network access derived from the graph
By default, the database ACL comes from the egress ranges of the SKE cluster that replaces the ECS services, so only the workloads reach it.
Values to decide become variables
Storage class and size are inputs with a stated origin, never invented defaults. Your team fills them once, and the next run reads them.
Every attribute accounted for
Of the 27 meaningful attributes set on this Aurora cluster, each one is consumed, mapped to a STACKIT contract or named as not carried over. None is left unaccounted.
How the conversion works
Resolve the estate
Root modules, child modules from the Terraform Registry, variables and count or for_each expansions become one dependency graph.
Decide per resource
A versioned rule base gives each resource a STACKIT target and a migration class, based on its actual configuration.
Write STACKIT code
Files per domain: network, data, identity, Kubernetes, load balancing, messaging, security and observability, plus variables and provider pins.
Validate and trace
Static validation with OpenTofu against the pinned STACKIT provider, and trace IDs from the STACKIT code back to each source resource.
What lands in terraform/
The STACKIT Terraform of the Retail Store run, organized the way a platform team maintains it.
- network.tf
- STACKIT networks for the former VPC and subnets
- data.tf
- PostgreSQL Flex, MariaDB, Key Value Store, OpenSearch and MongoDB Flex
- kubernetes.tf
- The SKE cluster and node pool for the ECS workloads
- identity.tf
- Service accounts and role assignments for the former IAM roles
- loadbalancing.tf
- STACKIT Application Load Balancer
- messaging.tf
- STACKIT RabbitMQ for Amazon MQ
- security.tf
- Security groups and rules
- observability.tf
- STACKIT Logs
- variables.tf
- Every value your team decides, with its origin
- terraform.tf
- Pinned STACKIT provider
Proven on a real AWS estate
The AWS Retail Store Sample App, a public Terraform project from AWS, assessed by StackToIT and published in full, exactly as the run wrote it.
View Case Study- 282
- Terraform resource declarations analyzed
- 44
- migration units identified
- 38
- target units generated, from 52 considered
- 331
- plan steps written
Questions platform teams ask
Does StackToIT convert Terraform modules?
Yes. StackToIT resolves registry and local modules, including the community AWS modules, and maps the resources they create. The conversion above comes from the terraform-aws-modules/rds-aurora module.
Does it work with OpenTofu?
Yes. StackToIT reads Terraform and OpenTofu root modules, and validates the STACKIT code statically with OpenTofu.
Who applies the STACKIT Terraform?
Your team, through your own pipeline, after your architects review it. StackToIT changes nothing in any cloud.
Sources
Your next move: STACKIT.
Tell us about your estate. We show you what StackToIT delivers for it: target architecture, Terraform artifacts and a structured migration plan.