AFT Modules Deployment Plan โ Simplified Breakdown

NOTE: https://github.com/aws-ia/terraform-aws-control_tower_account_factory.git
The Account Factory for Terraform (AFT) is organized into multiple Terraform modules that together automate and manage AWS Control Tower account provisioning. These modules have dependencies on each other, so you must deploy them in a certain order.
1. Packaging Module
What it does:
Packages Lambda functions and other artifacts into archives (zipped files), preparing them for deployment.Why first?
Other modules need the file paths and hash values from these archives to deploy Lambdas correctly.Key detail:
It generates and uploads artifacts (Lambda code, etc.) used downstream.
2. Account Request Framework
What it does:
Manages requests for new AWS accounts, including:DynamoDB tables (state storage)
SQS queues and SNS topics (messaging)
VPC setup for network isolation
Dependencies:
Needs artifact info from Packaging.Why now?
Sets the core infrastructure for handling account requests.
3. Lambda Layer Module
What it does:
Creates shared Lambda layers (libraries) used by provisioning and customization Lambdas.Dependencies:
Uses KMS keys (encryption), VPC info, and archives from previous modules.Why now?
Lambdas in later modules depend on this shared layer for code reuse and size reduction.
4. Account Provisioning Framework
What it does:
Contains Step Functions and Lambdas that automate provisioning new AWS accounts from requests.Dependencies:
Requires SNS topics, KMS keys, Lambda layers, and archives from earlier modules.Why now?
This module is the engine that actually creates accounts.
5. Backend Infrastructure
What it does:
Sets up S3 buckets and DynamoDB tables to store Terraform state and other persistent data.Dependencies:
Independent, but needed by many modules to save state/configuration.Why now?
Needs to be available early for modules that store their state remotely.
6. Code Repositories
What it does:
Creates/configures code repos (e.g., AWS CodeCommit) for storing provisioning/customization code.Dependencies:
Needs VPC info and backend storage from previous modules.Why now?
Provides the place where account customization code lives.
7. Customizations
What it does:
Manages pipelines and orchestration for customizing accounts (post-provisioning).Dependencies:
Requires backend, provisioning framework, and code repos.Why now?
Runs after accounts are provisioned to customize them.
8. Feature Options
What it does:
Enables optional features like CloudTrail data events, support enrollment, VPC deletion.Dependencies:
Depends on frameworks and Lambda layers.Why now?
Deployed after core provisioning and customizations are ready.
9. IAM Roles
What it does:
Defines IAM roles used for cross-account access and internal permissions.Dependencies:
Depends on the setup of foundational accounts.Why now?
Deploys after foundational modules/accounts are ready to assign roles securely.
10. SSM Parameters
What it does:
Stores configuration and metadata in AWS Systems Manager Parameter Store.Dependencies:
Uses outputs from nearly all other modules.Why last?
Collects all config and metadata after everything else is deployed.
How This Maps to the GitHub Repo (https://github.com/aws-ia/terraform-aws-control_tower_account_factory)
The GitHub repo is the official AWS-provided Terraform module for Control Tower Account Factory, which contains all these submodules and their logic.
The
modules/aft-archives
corresponds to your Packaging Module.The
modules/aft-account-request-framework
is the Account Request Framework.aft-lambda-layer
,aft-account-provisioning-framework
, and others exactly match your deployment plan.The repo README and docs explain usage and dependencies between these modules.
Each module folder in the repo contains Terraform code to deploy the specific resources mentioned in your plan.
Summary โ Why This Order Matters
Packaging artifacts must exist before any Lambda functions can be deployed.
Account request infrastructure (queues, tables) is foundational for managing lifecycle.
Shared Lambda layers must be ready before Lambdas depending on them are deployed.
Backend storage (S3/DynamoDB) must be ready early for state management.
Code repos and customizations come after core provisioning to allow customization pipelines.
IAM roles and SSM parameters are finalized last to secure access and centralize config.
Subscribe to my newsletter
Read articles from Chinnayya Chintha directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Chinnayya Chintha
Chinnayya Chintha
I am ๐๐ต๐ถ๐ป๐ป๐ฎ๐๐๐ฎ ๐๐ต๐ถ๐ป๐๐ต๐ฎ, ๐ฎ ๐ฟ๐ฒ๐๐๐น๐๐-๐ฑ๐ฟ๐ถ๐๐ฒ๐ป ๐ฆ๐ถ๐๐ฒ ๐ฅ๐ฒ๐น๐ถ๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ ๐๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ (๐ฆ๐ฅ๐) with proven expertise in ๐ฎ๐๐๐ผ๐บ๐ฎ๐๐ถ๐ป๐ด, ๐ฎ๐ป๐ฑ ๐บ๐ฎ๐ป๐ฎ๐ด๐ถ๐ป๐ด ๐๐ฒ๐ฐ๐๐ฟ๐ฒ, ๐๐ฐ๐ฎ๐น๐ฎ๐ฏ๐น๐ฒ, ๐ฎ๐ป๐ฑ ๐ฟ๐ฒ๐น๐ถ๐ฎ๐ฏ๐น๐ฒ ๐ถ๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐๐ผ๐น๐๐๐ถ๐ผ๐ป๐. My experience spans ๐ฐ๐น๐ผ๐๐ฑ-๐ป๐ฎ๐๐ถ๐๐ฒ ๐๐ฒ๐ฐ๐ต๐ป๐ผ๐น๐ผ๐ด๐ถ๐ฒ๐, ๐๐/๐๐ ๐ฎ๐๐๐ผ๐บ๐ฎ๐๐ถ๐ผ๐ป, ๐ฎ๐ป๐ฑ ๐๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐ฎ๐ ๐๐ผ๐ฑ๐ฒ (๐๐ฎ๐), enabling me to deliver ๐ต๐ถ๐ด๐ต-๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐ถ๐ป๐ด ๐๐๐๐๐ฒ๐บ๐ that enhance operational efficiency and drive innovation. As a ๐๐ฟ๐ฒ๐ฒ๐น๐ฎ๐ป๐ฐ๐ฒ ๐ฆ๐ถ๐๐ฒ ๐ฅ๐ฒ๐น๐ถ๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ ๐๐ป๐ด๐ถ๐ป๐ฒ๐ฒ๐ฟ, I specialize in: โ ๐๐บ๐ฝ๐น๐ฒ๐บ๐ฒ๐ป๐๐ถ๐ป๐ด ๐๐ฒ๐ฐ๐๐ฟ๐ฒ ๐ฎ๐ป๐ฑ ๐๐ฐ๐ฎ๐น๐ฎ๐ฏ๐น๐ฒ ๐ฝ๐ฎ๐๐บ๐ฒ๐ป๐ ๐ด๐ฎ๐๐ฒ๐๐ฎ๐ ๐๐ผ๐น๐๐๐ถ๐ผ๐ป๐ ๐๐๐ถ๐ป๐ด ๐๐ช๐ฆ ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐ ๐น๐ถ๐ธ๐ฒ ๐๐ฃ๐ ๐๐ฎ๐๐ฒ๐๐ฎ๐, ๐๐ฎ๐บ๐ฏ๐ฑ๐ฎ, ๐ฎ๐ป๐ฑ ๐๐๐ป๐ฎ๐บ๐ผ๐๐.. โ ๐๐๐๐ผ๐บ๐ฎ๐๐ถ๐ป๐ด ๐ถ๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐ฝ๐ฟ๐ผ๐๐ถ๐๐ถ๐ผ๐ป๐ถ๐ป๐ด with ๐ง๐ฒ๐ฟ๐ฟ๐ฎ๐ณ๐ผ๐ฟ๐บ. โ ๐ข๐ฝ๐๐ถ๐บ๐ถ๐๐ถ๐ป๐ด ๐บ๐ผ๐ป๐ถ๐๐ผ๐ฟ๐ถ๐ป๐ด using ๐๐น๐ผ๐๐ฑ๐ช๐ฎ๐๐ฐ๐ต. โ Ensuring compliance with ๐ฃ๐๐-๐๐ฆ๐ฆ ๐๐๐ฎ๐ป๐ฑ๐ฎ๐ฟ๐ฑ๐ through ๐ฒ๐ป๐ฐ๐ฟ๐๐ฝ๐๐ถ๐ผ๐ป ๐บ๐ฒ๐ฐ๐ต๐ฎ๐ป๐ถ๐๐บ๐ โ implemented with ๐๐ช๐ฆ ๐๐ ๐ฆ and ๐ฆ๐ฒ๐ฐ๐ฟ๐ฒ๐๐ ๐ ๐ฎ๐ป๐ฎ๐ด๐ฒ๐ฟ. These efforts have resulted in ๐ฒ๐ป๐ต๐ฎ๐ป๐ฐ๐ฒ๐ฑ ๐๐ฟ๐ฎ๐ป๐๐ฎ๐ฐ๐๐ถ๐ผ๐ป ๐ฟ๐ฒ๐น๐ถ๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ and ๐๐๐ฟ๐ฒ๐ฎ๐บ๐น๐ถ๐ป๐ฒ๐ฑ ๐ผ๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐ฎ๐น ๐๐ผ๐ฟ๐ธ๐ณ๐น๐ผ๐๐ for payment processing systems. I am passionate about ๐บ๐ฒ๐ป๐๐ผ๐ฟ๐ถ๐ป๐ด ๐ฎ๐ป๐ฑ ๐ธ๐ป๐ผ๐๐น๐ฒ๐ฑ๐ด๐ฒ ๐๐ต๐ฎ๐ฟ๐ถ๐ป๐ด, having delivered ๐ต๐ฎ๐ป๐ฑ๐-๐ผ๐ป ๐๐ฟ๐ฎ๐ถ๐ป๐ถ๐ป๐ด in ๐ฐ๐น๐ผ๐๐ฑ ๐๐ฒ๐ฐ๐ต๐ป๐ผ๐น๐ผ๐ด๐ถ๐ฒ๐, ๐๐๐ฏ๐ฒ๐ฟ๐ป๐ฒ๐๐ฒ๐, ๐ฎ๐ป๐ฑ ๐ฎ๐๐๐ผ๐บ๐ฎ๐๐ถ๐ผ๐ป. My proactive approach helps me anticipate system challenges and create ๐ฟ๐ผ๐ฏ๐๐๐, ๐๐ฐ๐ฎ๐น๐ฎ๐ฏ๐น๐ฒ ๐๐ผ๐น๐๐๐ถ๐ผ๐ป๐ ๐๐ต๐ฎ๐ ๐ฒ๐ป๐ต๐ฎ๐ป๐ฐ๐ฒ ๐๐ฒ๐ฐ๐๐ฟ๐ถ๐๐, ๐ฐ๐ผ๐บ๐ฝ๐น๐ถ๐ฎ๐ป๐ฐ๐ฒ, ๐ฎ๐ป๐ฑ ๐ผ๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐ฎ๐น ๐ฒ๐ณ๐ณ๐ถ๐ฐ๐ถ๐ฒ๐ป๐ฐ๐. Dedicated to ๐ฐ๐ผ๐ป๐๐ถ๐ป๐๐ผ๐๐ ๐น๐ฒ๐ฎ๐ฟ๐ป๐ถ๐ป๐ด, I stay updated with ๐ฒ๐บ๐ฒ๐ฟ๐ด๐ถ๐ป๐ด ๐๐ฒ๐ฐ๐ต๐ป๐ผ๐น๐ผ๐ด๐ถ๐ฒ๐ and thrive on contributing to ๐๐ฟ๐ฎ๐ป๐๐ณ๐ผ๐ฟ๐บ๐ฎ๐๐ถ๐๐ฒ ๐ฝ๐ฟ๐ผ๐ท๐ฒ๐ฐ๐๐ that push boundaries in technology.