Varnish is a Caching Reverse Proxy while CloudFront is a Content Delivery Network. My suggestion: If you are looking at serving content all over the world, go with CloudFront. If you're just serving to a local user base, simply fire up a high memory instance and install Varnish and serve content off Varnish. This takes time, but is definitely worth the effort.
Here's a useful link: https://fournines.wordpress.com/2011/12/02/improving-page-speed-cdn-vs-squid-varnish-nginx/