An Elastic IP address is a public IP address, so that takes care of public access.
While you can access your instance from within AWS's network with the public ElasticIP address instead of using the private IP address, you'll pay for it:
https://aws.amazon.com/ec2/pricing/
Data Transfer IN To Amazon EC2 From
- Amazon EC2, Amazon RDS, Amazon Redshift and Amazon ElastiCache instances or Elastic Network Interfaces in the same Availability Zone
- Using a private IP address $0.00 per GB
- Using a public or Elastic IP address $0.01 per GB
Data Transfer OUT From Amazon EC2 To
- Amazon EC2, Amazon RDS, Amazon Redshift or Amazon ElastiCache instances, Amazon Elastic Load Balancing, or Elastic Network
Interfaces in the same Availability Zone
- Using a private IP address $0.00 per GB
- Using a public or Elastic IP address $0.01 per GB
You don't need DNS to access the instance -- the IP alone is sufficient.