Work · Financial services

Bringing a hand-built AWS account under Terraform without an outage

Imported an organically-grown AWS environment into Terraform, split prod from non-prod, and added a gated deploy pipeline — with zero downtime.

Illustrative example — representative of real engagements, published as a template until client-approved write-ups replace it.

Resources under code
0% → 100%
Long-lived IAM keys
11 → 0
Time to stand up a new env
2 days → 20 min

The problem

  • Everything ran in one AWS account, configured in the console, with no record of why anything was set the way it was.
  • Several IAM users had broad access and static keys, some unused for months.
  • A compliance review was coming and the team could not answer basic questions about their own setup.

The approach

  • Inventoried the account and imported live resources into Terraform state — no destroy-and-recreate.
  • Introduced a second account for non-prod and moved staging workloads across in a planned window.
  • Replaced IAM users with SSO and assumed roles; wired CI to AWS via OIDC so no static keys remained.
  • Added an MR pipeline that posts the Terraform plan and a manual gate for production applies.

The outcome

  • The team passed the compliance review with an architecture document generated from the code.
  • New environments are a variables file and a merge.
  • Infrastructure changes are now reviewed like application code.

Have a project in mind?

Tell me what you are building. You get a scoping call and a fixed quote — no obligation.