Compress images in Amazon S3 buckets using lossless and lossy optimization methods via the EWWW Image Optimizer.
The S3 Image Optimizer will optimize all your images in 1-1,000+ Amazon S3 buckets using the EWWW Image Optimizer. Since EWWW IO integrates directly with plugins like WP Offload Media, S3 IO is generally for folks who use a solution other than WP Offload Media to put their images on S3. But, if you have 20 sites sharing an S3 bucket, or have lots of buckets, and you would want to optimize them all from one place instead of 20 different sites, this is the plugin for you.
S3 IO features a web-based bulk optimization process, and a WP-CLI interface for massive buckets. S3 IO works with any S3-compatible storage service including Linode, Backblaze B2 and Digital Ocean Spaces.
You may report security issues through our Patchstack Vulnerability Disclosure Program. The Patchstack team helps validate, triage and handle any security vulnerabilities. Report a security vulnerability.
First, it is worth noting that S3 IO is “site agnostic”. For example, if you have images for http://www.example.com in your S3 bucket, you do NOT have to run S3 IO on the WordPress install for example.com. You could install it at test.com, or myfuzzybunnies.com, or any site you manage. In fact, you may even create a dedicated WordPress install just for running S3 Image Optimizer, with no other plugins needed except EWWW IO and S3 IO.
Now that we have that cleared up, let’s get down to business. You need 2 plugins to make this work: S3 Image Optimizer, and the EWWW Image Optimizer. Then…
You may also define constants to restrict S3 IO to a specific bucket and/or sub-folder: S3_IMAGE_OPTIMIZER_BUCKET and S3_IMAGE_OPTIMIZER_FOLDER. These override the bucket list on the settings page, and will look like this (note the lack of leading/trailing slashes on the folder setting):
define( ‘S3_IMAGE_OPTIMIZER_BUCKET’, ‘my-amazing-bucket-name’ );
define( ‘S3_IMAGE_OPTIMIZER_FOLDER’, ‘wp-content/uploads’ );
If your IAM user does not have access to list all buckets, you will generally also need to configure the region, something like this:
define( ‘S3_IMAGE_OPTIMIZER_REGION’, ‘eu-west-1’ );
View the full list of region names.
wp-cli help s3io optimize
If you have configured S3 IO to optimize all your buckets, try a single bucket to see if that will work. If that still doesn’t work, use the S3_IMAGE_OPTIMIZER_FOLDER setting above to restrict optimization to a specific folder. This way you can optimize a single bucket by configuring each folder within the bucket, running the S3 Bulk Optimizer, and then moving to the next folder.
If the last option has you groaning, see if your web host supports WP-CLI. Using WP-CLI allows you to avoid any timeouts, and solves a whole host of issues with long-running processes. The wp-cli help s3io optimize
command should get you going.
If you’ve tried everything, and WP-CLI isn’t an option with your web host, find a web host that DOES support WP-CLI. It’s pretty easy to find a cheap host that supports WP-CLI, like GoDaddy. While I wouldn’t recommend GoDaddy for hosting, if you want a cheap solution to run WP-CLI, it works. Remember that S3 IO is site agnostic, so you can run it from a site completely separate from the site(s) that your S3 images belong to. You could also fire up a Digital Ocean droplet with WordPress pre-installed for $5 and put WP-CLI on there. When you’re done, you can make a backup image of the droplet and destroy it so that you aren’t paying for usage all the time.
Most problems we’ve seen are either permissions-related, or covered by the timeout stuff above. If you have a question, shoot us an email!