Background : I have a domain, lets say example.com. I assign an elastic IP to a instance on EC2 and give it the dns name as example.com
I want to put 5 instances of EC2 under this domain, like so :
i1.example.com, i2.example.com,...

Question :

1 - is the above said possible ?
2 - if yes how to achieve it ? if no, whats the work around ?

When referring to these systems, AWS EC2 DNS servers always report the correct IP - if it is being referenced externally it gives the external IP and if being used inside the EC2 cloud it gives the internal IP (no additional bandwidth cost)

The easiest way is to use the other 4 elastic IPs and apply them to the i-N instances, in which case they'll just be additional DNS entries for those other IPs in your public DNS---no different from www.example.com.

A slightly less ugly version (but much more involved) method would be to run a reverse proxy that looks at the requests coming in and forwards them to the internal addresses of the i-N.example.com instances based on something identifiable at the application layer (e.g. HTTP vhost)

An uglier version would involve procuring a hosted + dynamic DNS service for example.com, and writing a startup script that would update the DNS for the i-N instances appropriately.