Reputation: 4168
Is there a best practice around separating environments in AWS?
I've got a solution that employs the following services:
We're not live yet, but we're getting close. By the time we go-live, I'd like a proper production, test, and development environment with a "reasonable" amount of isolation between them.
I read the article AWS NETWORKING, ENVIRONMENTS AND YOU by Charity Majors. I'm down with segmentation via VPC, but I don't know that all the services in my stack are VPC scoped? Here are some of my requirements:
I am using an AWS Organization.
P.S. Apologies if this isn't the right forum for the question. If there is something better, just let me know and I'll move it.
Upvotes: 7
Views: 5660
Reputation: 1968
The account separation is recommended by the AWS Well Architected Framework security pillar.
Upvotes: 3
Reputation: 35
Avoid separate accounts for each environment to avoid additional complexity and obstacles in accessing shared resources. Try rather using:
Upvotes: 1
Reputation: 55720
I recommend one AWS account per environment. The reasons, in no particular order:
Did I miss anything? Possibly! But these are the reasons why I would use separate accounts.
By the way - I am NOT advocating against using VPCs. They exist for a reason and you should definitely use VPCs for network isolation. What I am trying to argue is that anybody who also uses other services such as DynamoDb, Lambda, SQS, S3 etc - VPCs are not really the way to isolate resources, IMO.
The downsides to one account per stage that I can think of are mostly around continuous deployment if you use tools that are not flexible enough to be able to deploy to different accounts.
Finally, some people like to call on billing as a possible issue but really, wouldn’t you want to know how much money you spend on Production vs Staging vs Development ?!
Upvotes: 16