Accessing your database over HTTP leaves it open to interception so it is hoped that there is no sensitive information in it nor any authentication (since you are passing your id and password in the clear over the Internet).
1) Can I use my Public DNS address to get the SSL certificate?
That is what you should do. UPDATE: Of course, that only works when using your own domain name - you can't do that if using an AWS domain name.
2) Are there any free CA's that are known as trusted that I can use to obtain a certificate?
There are some but they are limited. LetsEncrypt and StartSSL for example. The level of trust is limited though since they don't provide any background checks to prove that you are legitimate.
UPDATE: I may have been a bit negative seeming about LE. It is absolutely fine for low-trust use. A step up from a self-signed cert (though that is also fine if you can get through the issue of installing root certs to all clients). It depends on your use case though and how much trust you need to apply. Without knowing the details, I can't tell you what level of trust you need. LE certs might be fine or you might need to go to the opposite extreme of an extended validation cert.
Also note that LE certs have a very short lifespan. That means that realistically, you have to have an automated certificate renewal script in place and that does reduce the security slightly unless you do the renewal outside the server the cert is for.
3)I want to use https because the EC2 instance will be handling user login. Should I go ahead and use regular http and send information that way instead of trying to set up https?
NEVER do logins over HTTP! Again, it would mean sending sensitive data in clear text over the Internet. That just invites someone to intercept it and misuse the information.