james david low

live / work / play / worship

Amazon S3 for WordPress with CloudFront

This WordPress plugin allows you to use Amazon’s Simple Storage Service to host your media for your WordPress powered blog.

It is an extension of the Tantan S3 plugin adding support for setting a CloudFront distribution for your files.

Get it from WordPress here

If you found any of the software useful, please consider supporting its further developement by donating.
6:18am / Oct 12th / 11
« Database Read Replicas Detecting Quercus »


    I was trying to use this plugin today for the first time. I like the concept but it does not appear to be uploading in to my S3 account. I uploaded into the media library. When I go to the MEDIA LIBRARY there is no thumbnail of the image, just text. If I click on EDIT there is no image either. However, if I click on EDIT IMAGE the image appears. If I click on VIEW there is no image either. When I visit the bucket I selected for the Amazon S3 storage it does not contain the image either. If I paste the image URL from the WordPress Media File into the browser it gives me the following error:

    The specified bucket does not exist


    Can you tell why this plugin is not working?


    1:31am / Nov 3rd / 11 Wendy Merritt

    AHA! I figured out the error. Your plugin requires that all the letters in the bucket name be lowercase.

    You might want to change that or make a note of this in the WordPress repository so other people don’t have the same issue.


    4:20am / Nov 3rd / 11 Wendy Merritt

    This plugin is exactly what I was looking for – awesome! I’ve only done some quick testing on it, set it up in a WP Multisite environment…the one thing I noticed, though – when I delete a picture from the WP Media, it deletes in WP – but it doesn’t delete in the Amazon S3 bucket…Is this something that will be addressed in a future release/version? Right now it’s not a huge issue, just having that delete functionality would make it truly a superb plugin! (right now, it’s great :)

    Thanks – Kevin

    11:33pm / Dec 11th / 11 Kevin W

    Fatal flaws:

    1. The delete issue above (it IS a big deal; maintaining two separate systems is fraught with peril)
    2. No differentiation between blogs; if I have 24 different blogs (yes, mine and my clients’) then it all dumps into the same folder path. True, not visible on the WordPress side, but in S3, it’s a mess.

    And I was so hopeful.

    12:41am / Dec 17th / 11 Joel D Canfield


    I am trying to use this WordPress plugin, and I have uploaded my mp4 file into Amazon S3. But when I am in WordPress, I can’t seem to locate and upload my mp4 file from Amazon S3. When I click on the “Amazon S3” icon, it takes me to the screen that says “Add media files from your computer / from URL / from Media Library.”

    Can you please tell me where/how to locate my mp4 file from Amazon S3 so I can upload into WordPress?

    Thank you!!

    4:09pm / Dec 18th / 11 JD

    […] last plugin is Amazon S3 for WordPress with CloudFront. This plugin lets you upload directly to your S3 bucket and you get a fancy new icon next to your […]

    6:34pm / Jan 17th / 12 Shinyidol » Amazon S3 and Wordpress


    I just upgraded to WP 3.3.1 and your plugin does not seem to be working anymore. The S3 page to upload does not come up. Instead the regular WP uploading form comes up.

    Everything was working fine before the upgrade.
    Please check into this.



    2:44pm / Jan 22nd / 12 Charles

    Can you add an option for reduced redundancy storage. I tried to edit the S3 class to add the proper header to no avail.

    12:29am / Jan 25th / 12 Eric

    if you change the putObjectStream function to include the following, you should be able to upload to s3 using reduced redundancy. would be nice to have option in admin page.

    first add this header
    $header[] = “x-amz-storage-class: REDUCED_REDUNDANCY”;

    then you also need to replace the $stringToSign line with this:


    5:12am / Jan 25th / 12 Eric

    plugin works perfect for me.

    2:04am / Feb 24th / 12 Matt

    Deosn’t work well on Windows WP installs. Images broken, uploads don’t work. Disappointed, as it was just waht I was looking for. If you get a version that works on WIndows please let me know.

    3:31am / Mar 13th / 12 Phil

    Nice work!

    @Joel, I was worried about those two fatal flaws as well — the delete option is important to me but not a deal-breaker.

    However, this plugin *does* sort additional blogs’ media into separate root folders inside your bucket. (I even customized the plugin so that the folders are named by blog_id and not by domain.) So it’s great for my purposes with over 200 multi-site blogs.

    We prefer to run it invisibly using the config.php file, and not even offer the S3 button in the add media dialogue box.

    9:58pm / Mar 28th / 12 N Magee

    not working with wp 3.3.1

    – fails to create new bucket
    – note: requires lowercase buckets
    – images appear to upload but are blank!

    6:37am / Apr 5th / 12 Joe

    Hey, there. Your Amazon S3 plugin appears to not be working with 3.4. Do you know where the trouble could be as I could have a shot at fixing it.

    6:07am / Jun 16th / 12 Thomas Alexander

    I’m not really maintaining the plugin. I just did a quick build of TanTan’s S3 plugin that did what I needed to do.

    7:50am / Jun 29th / 12 James Low

    Hi James,

    I’ve been using this plugin and have made some changes: https://github.com/bradt/wp-tantan-s3/. I’d like to update the WP.org repo and continue maintain the code there. If you could go to http://wordpress.org/extend/plugins/tantan-s3-cloudfront/admin/ and add “bradt” as a committer, that would be great.


    6:18am / Sep 9th / 12 Brad Touesnard

    Can we get the code to embed this on a webpage.

    As of now the only way to do this is to drag the widget to a footer heading and have it visible on all pages.

    I want this form public on a published page that
    is only accessible by being redirected from Paypal

    10:25am / Sep 9th / 12 Mike

    Hi James,

    When I activate the plugin and enter my amazon keys I get the following error:

    Call to undefined function curl_init() in /var/www/wp-content/plugins/tantan-s3-cloudfront/lib/curl.php on line 23

    I am using pagodabox to host and as such almost everything is read only (bar the uploads directory that I have currently defined). Could this be the issue? Or am I way off base?


    10:29am / Nov 12th / 12 Tom


    Please disregard my last comment, it is the lack of libcurl in the default pagodabox PHP deployment.


    10:32am / Nov 12th / 12 Tom

    Just installed the plugin but files arn’t being uploaded. WP says everything is fine but I get broken images in WP and nothing is in the bucket. I manually created the bucket and set the permissions to public as the plugin didn’t create them either.. I guess amazon has changed things. Any ideas? thanks!

    6:15pm / Mar 24th / 13 Michael

    Hello I installed the Amazon S3 for WordPress with CloudFrontplug in but wen i enter my access key along with secret key all i get on top is an error but no descrisption from the error message any suggestions??

    Any help would be appreciated thank you!

    3:28am / May 14th / 13 Mercedes

    Activated the plugin, saved the S3 settings. But when I upload media files, I don’t get option to upload to Amazon s3? I get the normal ‘select files’ button. WHen I upload an image, I get this red X next to it after uploading, How do I know whether it’s going to S3 or not? Thanks a lot for your time. I am quite new to WP.

    5:20am / May 16th / 13 Raj

    Does anyone know how I can instruct this plugin to add HTTP headers (Content-Disposition: Attachment) to media files when they are uploaded?

    I have this setup on my WordPress .htaccess, but S3 ignores my Mimetype headers since it’s not on my server.

    I found this bit of code in the lib.s3.php file in the plugin editor… but I’m not sure if that’s what I should be editing:

    $header[] = “Date: $httpDate”;
    —-> $header[] = “Content-Type: $contentType”;
    $header[] = “Content-Length: $contentLength”;

    2:09am / Oct 24th / 13 Garrett