I haven't been able to find any best practices for AWS security groups. I figure there are two approaches I could take, but I'm not sure on if there are any particular drawbacks to either one.
Scenario 1:
Define small, specialized security groups such as "ssh," "mongodb," "web," etc, and then in essence "stacking" multiple security groups on each EC2 instance to specify which ports are open.
Scenario 2:
Define larger, more generic security groups such as "web1" which opens ports 80, 443, ssh, database, and apply this to any appropriate EC2 instances.
I think I'd rather go with scenario #1, but don't know if there are any disadvantages or technical issues with this approach. Is there a best practice?