- Newest
- Most votes
- Most comments
Hi There
AWS multi-account strategy is the recommended approach which involves organizing your AWS resources across multiple AWS accounts to improve security, cost management, and resource isolation. By creating separate AWS accounts for different business units, environments (e.g., development, staging, production), or specific applications, you can achieve better access control and resource management. The multi-account approach enables you to apply centralized governance and policies, while also allowing for autonomous operations within individual accounts, leading to improved operational efficiency and security.
- I would recommend adopting AWS Organizations and IAM Identity Center for a single-signon solution rather than individual IAM users.
- You can create Sandbox accounts for devs to experiment in, and workload accounts for each environment with different sets of controls
- THis will work fine, you can deploy across accounts by assuming IAM roles
- Again this should not be a problem with cross-account IMA Roles
Take a look at the Multi-Account Strategy Whitepaper, and specifically, a starter org layout here: https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/basic-organization.html
You've hit the exact pain points that signal it's time to move to a multi-account setup. Here's what I'd recommend:
AWS Organizations with multiple accounts:
Account 1: Management Account
- Only used for AWS Organizations and consolidated billing
- Don't deploy anything here
- Lock down the root user and forget about it
Account 2-4: Environment Accounts
- Production account (locked down, strict access)
- Staging account (similar to prod)
- Development account (where all developers work)
Why this solves your problems:
- AWS limits are per-account - so each environment gets its own set of limits. Your prod buckets don't compete with dev experiments
- Security is way easier - you can lock down prod with strict SCPs and prevent accidental deletions/changes. Developers can't accidentally touch prod resources
- Blast radius is contained - if someone messes up in dev, it doesn't affect staging or prod
For developer access:
- Ditch IAM users and set up AWS IAM Identity Center (formerly SSO) in your management account
- Each developer gets federated access with appropriate permissions per account
- Way cleaner than managing IAM users and their keys
For developer stacks:
In the development account, each developer can still have their own CloudFormation stack with proper naming (serverless deploy --stage=john-dev). Since it's a separate account, you don't hit the same limits as prod.
Your CI/CD stays the same:
GitHub Actions can still run serverless deploy --stage=prod, but now it assumes a role into the production account. Same workflow, just better isolated.
I wrote a detailed guide that walks through exactly how to structure multiple accounts as you grow, including how to set up proper boundaries between environments.
And if you want to understand how to set up a solid foundation with proper governance (SCPs, Landing Zone, cross-account roles for CI/CD, etc.), that'll help you get it right from the start.
TL;DR: Set up AWS Organizations with separate accounts for management, prod, staging, and dev. Use IAM Identity Center for developer access. Your IaC workflow stays the same, but you get proper isolation and better security.
Relevant content
- AWS OFFICIALUpdated 18 days ago

Thanks for your answer! A few follow-up questions:
Good question! AWS best practice is to avoid running workloads in the management account. See https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html
What I would do is:
Excellent advice. If I may ask one last question: currently we use Route 53 to manage per-developer and per environment domain names that point to the API Gateway e.g. prod.bigcorp.com, staging.bigcorp.com, developer1.bigcorp.com. This can be done without any per-developer console work today using the Serverless Framework Domain Manager plugin (https://www.serverless.com/plugins/serverless-domain-manager). If we have several accounts can they still share the same (root) domain and use an IaC solution like Serverless to have each account manage its own subdomain?
You can create the main hosted zone in a shared account and then delegate subdomains to the individual accounts. heres a good Medium Article that explains, and a Blog Post that explains how to automate this.