To learn more about CloudFront, I recently moved an S3-based web-site (one containing an experimental picture application) to be distributed via CloudFront. The goal was to enable faster downloads, based on the end-user’s geography.
Setting up the CF distribution was pretty straightforward. However, the app wasn’t working correctly: when entering the URL with just the host name, the default object (i.e. usually index.html) wasn’t loading. It turns that this needs to be configured explicitly in the CF UI. Here is the field in the “General” properties:

All good: now the web-site would load when going to the base URL. However, subsequent directories in the URL path wouldn’t load this document.
When served directly from S3, this setting:

was sufficient to have the index file be used for each directory. Specifically
curl http://host.com/
curl http:/host.com/05-02-2012/
would both return the contents of s3-list.html. However, when the DNS name for the CloudFront endpoint was used, s3-list.html was only returned for the first URL.
I researched a bit; I couldn’t determine if the S3 model is too permissive, or if the CF model was limited. I ended up changing my app a bit to accommodate the CF model. Namely, I changed internally created URL to reference the specific page, rather than assuming the server would return the default.