Skip to content
DnsLister Forum

Where domain hunters compare notes

AWS account structure for hosting multiple client websites

For a small web-hosting business where I host multiple clients’ static websites using AWS, primarily S3 + CloudFront.

DNS is hosted and managed through Cloudflare, so Route 53 isn’t part of the setup. ACM is used for SSL certificates where required.

Each client’s website codebase is completely separate, with each client having their own GitHub repository and CI/CD pipeline.

My current setup
I already host a couple of client websites using:
AWS Organisation
│
├── Client A AWS account
│ ├── Development resources
│ └── Production resources
│
└── Client B AWS account
├── Development resources
└── Production resources

So currently I’m doing one AWS account per client, with dev and prod separated within the account.
As I add more clients, I’m wondering whether I should continue with this approach or change the architecture.

The options I’m considering

1. One AWS account per client
This is my current approach:

AWS Organisation
├── Client A account
│ ├── Dev
│ └── Prod
├── Client B account
│ ├── Dev
│ └── Prod
└── Client C account
├── Dev
└── Prod

2. One AWS account per client per environment

AWS Organisation
├── Client A
│ ├── Dev account
│ └── Prod account
├── Client B
│ ├── Dev account
│ └── Prod account
└── Client C
├── Dev account
└── Prod account

This provides stronger environment-level isolation, but obviously results in significantly more AWS accounts.

3. One AWS account for all clients, with separate Terraform states

AWS account
├── Client A → Terraform state A
├── Client B → Terraform state B
└── Client C → Terraform state C

Each client would still have separate resources and Terraform state, but all clients share the same AWS account.

4. One AWS account for all clients with a single Terraform state

AWS account
└── Terraform state
├── Client A
├── Client B
└── Client C

I’m particularly interested in whether my current approach of one AWS account per client with dev/prod inside that account is a sensible long-term architecture, or whether there’s a compelling reason to move to either separate accounts per environment or a shared AWS account with separate Terraform states.

For those running a multi-client AWS hosting setup:
What architecture have you settled on, and what would you do differently if starting again?

I’m especially interested in the practical implications once you get beyond a handful of clients — account management, Terraform, CI/CD, security, billing and operational overhead.

Source: r/aws · by /u/Realistic-Depth-3124

Leave a Reply

Your email address will not be published. Required fields are marked *