In your /etc/vsftpd.conf add:
(Where 1.2.3.4 is your external public IP address.)
Then:
and restart vsftpd.
What this does is configure vsftpd to use ports 10000-10024 for passive data transfers. Then ec2-authorize opens ports 20-21 and 10000-10024 for active and passive connections.
I was banging my head against the wall trying to figure out why my passive connections were hanging. I had everything in the config except pasv_address. When I added that, it started working perfectly.
You might also be interested in: