Terraform lives in
jajera/aws-nfw-lab. This walkthrough
is docs only.
Three accounts, three profiles, two Regions. Every profile is used in both
Regions, and hub-peering is the one stack that exists in Sydney only:
The two prerequisites that bite are along the bottom: Organizations RAM sharing, and Region opt-in for ap-southeast-6. Icons from aws-icons.
Need permission for TGW, Network Firewall, RAM, EC2, SSM, Route 53 private zones.
git clone https://github.com/jajera/aws-nfw-lab.git
# HashiCorp apt/yum or tfenv
| Tool |
Version |
Notes |
| Terraform |
>= 1.16 |
|
| AWS provider |
~> 6.64 |
pinned in each stack |
jq |
any |
several walkthrough checks parse JSON output |
aws sts get-caller-identity --profile YOUR_HUB_PROFILE
aws sts get-caller-identity --profile YOUR_DEV_WORKLOAD_PROFILE
aws sts get-caller-identity --profile YOUR_PROD_WORKLOAD_PROFILE
| Doc placeholder |
Used for |
YOUR_HUB_PROFILE |
Both hubs + hub-peering |
YOUR_DEV_WORKLOAD_PROFILE |
workload-dev stacks + SSM on dev hosts |
YOUR_PROD_WORKLOAD_PROFILE |
workload-prod stacks + SSM on prod hosts |
Confirm each profile can call both ap-southeast-2 and ap-southeast-6
(Auckland may need opt-in).
Same Organization: enable resource sharing with AWS Organizations so hub→workload
TGW RAM shares succeed.
Every stack:
cp terraform.tfvars.example terraform.tfvars
# set profiles + account IDs — do not commit terraform.tfvars
Hub stacks need both workload account IDs in workload_account_ids.
Same rail as Architecture. Teardown follows Validate. Icons from aws-icons.
Full terraform apply + vars. Prefer not -target. Teardown is
the last page.
Sydney hub