I been working with AWS for a while now. I'm running a few switches myself. This sounds very plausible and big scale solution using AWS. Starting with the items you mentioned, I would run some of them in containers, but some in AWS managed services. Freeswitch, FusionPBX, and NGINX I would run in containers. However, I would use RDS for the databases. Run Aurora to be more specific and create an extra db for Fusionpbx in there. Also for the persistent storage, use EFS, this is true Shared File system that can be leverage. Finally we could use Kamilio I guess for SBC. A better approach would be using Service Discovery and Lambda to update SRV and hosname records within route53. One big issue I have though about is registration awareness. With my HA switches, I have accomplished this by creating multiple external profiles and acls. However, this is far from stateless and I dont have that much experience with freeswitch. If we could make a module that writes registrations info to a dynamo db within aws using the event_socket, we could technically have the switch query this high performance db before making the call and find where the extensions are. By the way this is an issue only if you try to call an internal extension. Finally once this is completed, it would be nice to integrate Terraform and Chef to do the deployments from S3 or a repo (y)