We have a particularly unique situation so I will try to be as clear as I can be.
We've a sales cloud(AWS) which UAT team uses for testing and another separate account for production. I want to know what steps we would need to perform to make sure that the UAT environment mimics the production environment so that we can maximize your chances of finding any bugs. Note : Sales cloud is used by UAT teams for testing other products also.(Shared Environment). Instances are launched by other applications also(Multiple tomcats on single instance) I created prod DB AMI and gave it to QA team for testing before release but it didn't work later I found out that due to some sort of restriction we can't use encrypted volumes AMI created in one account to some other account in VPC.
Could someone please provide any suggestion?
Creating identical copies of whole environments is a task quite suited for AWS CloudFormation: http://aws.amazon.com/cloudformation/
Using AWS CloudFormation, you can define your stack in a json template, and CloudFormation can create, update and delete all resources in the stack. It does so atomically and in parallel, along many other features.
There are tools from AWS and 3rd parties, such as CloudFormer and VisualOps, that can help to author CloudFormation templates. There are also sample templates as reference: http://aws.amazon.com/cloudformation/aws-cloudformation-templates/
To get started with AWS CloudFormation, besides the resources in the AWS website, i'd recommend taking this free lab: https://run.qwiklab.com/focuses/preview/1379?locale=en&search=3573