I have no real-world experience using CloudFront, but on paper it strikes me as a viable CDN for medium or small volumes, and possibly high variation of volume over time, compared to Akamai's and LimeLight's offerings which may be better for steadily high volumes.
CloudFront is essentially a "pay per use" arrangement, and pricing is pretty transparent. For example, if in a typical month you serve about a million GETs from Europe and a million GETs from the US, each GET delivering about a megabyte, the data transfer will cost you as follows: $1.00
for the US gets, $1.20
for the Europe gets, $170.00
for each of of the two data transfer volumes (1000 GB each), total $342.20
. "No minimum, no cover", no fixed fees, just pay as you go: if next month your volumes double, so will your costs -- if they halve, so will your costs (lower per-GB tariffs only trigger at very high volumes).
In addition, you do have to pay S3 fees as well, since CloudFront edge servers get your data from S3; for the typical case, storage fees will be pennies (your 2000 GB served probably mean just a few GB stored, being served over and over), GET and transfer costs similar to the CloudFront pricing -- however, you typically won't be paying the S3 to edge transfer costs all that often, only when the "cache" kept at the edge nodes needs to be refreshed (so the extra cost depends essentially on the rate of "churn" of your contents).
A very complete article showing all that's needed to use S3 and CloudFront for a simple Ruby on Rails appliation is here -- don't be daunted if you don't do Ruby, it should be simple enough to follow anyway (hey, I don't do Ruby either, but I could follow along;-).