Question: I was asked how to save all the magento media assets in Amazon S3. I thought about using a PHP Stream Wrapper like this one: <https://github.com/punkave/aS3StreamWrapper> and just set the media folder to s3:\mybucket\mediaFolder

Does anyone has experience with this?

Or better use something like this: [https://github.com/sstoiana/magento-s3](https://github.com/sstoiana/magneto-s3)
But this extension doesn't look good. Any other recommendations?

Answer: 
[OnePica's CDN extension](http://www.magentocommerce.com/magento-connect/6274.html) is very handy out of the box for this functionality and supports more than just S3. Quote: "Currently, the extension integrates with Amazon S3, Coral CDN, Mosso/Rackspace Cloud Files, and any CDN, server or service that supports FTP, FTPS, or SFTP."
Well, now that a couple years have gone by I think it's important to note that there are multiple plugins available that will move and serve assets from S3 / CDN.

Google searches turn up plenty of options. 

Here's one on GitHub:

<https://github.com/magefm/cdn>

Here's one on Magento's Connect marketplace:

<http://www.magentocommerce.com/magento-connect/aws-s3-cdn-for-product-images.html>

I have not tried these particular extensions yet but will be for an upcoming project. There are others out there, too.

I'd have to disagree with @Sonassi, using separate storage to allow the cheapest server configuration still with good performance is really considered the best practice today. For example, simply use S3 to move all static content off your web server helps the server use far less bandwidth and allow more concurrent users and less overall server power needed. And, if you're in a single datacenter like most people these days, and say it's in Dallas, then there's no doubt that people in Western Europe will be served much faster with a Global CDN like Cloudfront. So, using storage separate from your web server to lower bandwidth usage allows you to use only 1 server when you would need more sooner without this approach, and using CDN will greatly increase global load times.