Sync media with AWS S3 CloudFront
Sync media with AWS S3 CloudFront
Description
Upload images, CSS and JavaScript from WordPress uploads to Amazon S3 and serve registered files through S3 or CloudFront. Local copies are retained, and stored post content is not changed.
- Full or incremental batch uploads with progress reporting.
- Searchable folder tree with a vertically resizable list.
- Remote URLs for registered files, including responsive images and common lazy-load markup.
- Confirmed deletion of tracked S3 files, with options to skip, restore or permanently delete files missing locally.
- Recovery of supported images into the Media Library, including a separate local-only repair tool. Recovered attachments receive new IDs; deleted captions, alt text and post associations cannot be reconstructed.
Clear your page cache after updates, configuration changes, uploads or deletion; the plugin does not purge it automatically. Existing unregistered S3 objects must be uploaded again to enter the registry.
Deactivation preserves settings and registry records. Uninstall removes local bookkeeping without deleting S3 objects.
Installation
- Log in to your WordPress dashboard, navigate to the Plugins menu, click on \”Add New\”
- Click on \”Upload Plugin\” and upload the archive \”Add-To-Cart-redirect-for-WooCommerce.zip\” then click on \”Install\”.
- Activate the plugin through the \”Plugins\” menu in WordPress.
Screenshots

Configuration tab allows you to enter your AWS S3 "Bucket name", "Access key" "Secret key", "Location" and select the directories and file types, which you want to upload to S3. The saved secret key is never included in the settings HTML. Leave the secret field empty to keep the saved key for the same access key, including when testing the connection. Enter a new secret to replace it; changing the access key requires its corresponding secret key.

If you want to use CloudFront service, just select "yes" for "Use Cloudfront" option and enter your CloudFront ID in the appropriate field.

Click "Test link to AWS" to check the selected bucket's region and, when enabled, the CloudFront distribution. Upload, delete, and public file access are not tested.

General tab contains the "Upload file to S3" button, which starts the process of the file upload. Besides you can see observe the process thanks to progress bar with the list of the already uploaded files.

You will see the message about your invalidation ID if you have saved a configuration "Use Cloudfront" > "yes" and have indicated your CloudFront ID.

Registered files use direct S3 URLs when "Use Cloudfront" is "no". Files without a successful upload registry entry keep their local URLs.

With "Use Cloudfront" set to "yes", registered files use the configured CloudFront domain. Each image size is checked separately.
Faq
“Test link to AWS” checks the configured bucket with GetBucketLocation and verifies that its region matches Location. It requires s3:GetBucketLocation on that bucket (for example, arn:aws:s3:::your-bucket), not s3:ListAllMyBuckets. When CloudFront is enabled, it also requires cloudfront:GetDistribution for the configured distribution. The test does not upload or delete objects and does not check upload/delete permissions or public access to file URLs. Other plugin operations require their own permissions. The test works without the PHP gettext extension.
Only files registered for the current bucket and S3 prefix receive remote URLs. WordPress attachment, image src/srcset and rendered img/picture HTML are supported, including common lazy-load attributes in posts and templates. Each thumbnail is checked separately. Stored post content is not modified. Existing page caches must be cleared separately; images inserted by JavaScript after the response require a separate integration.
CloudFront No uses direct S3 URLs for registered files. The plugin does not generate signed URLs or change bucket access policies. If the bucket permits access only through CloudFront, keep CloudFront enabled; anonymous direct S3 URLs will not be accessible.
Another plugin that loads different versions of the same AWS SDK or its dependencies can cause class conflicts. This plugin includes its SDK and loads it once; avoid replacing individual SDK files.
Supported image extensions are gif, png, jpg, jpeg, svg and webp. The uploader also supports CSS and JavaScript when those file types are included in the saved configuration. PDF, video and ZIP files are not upload candidates and do not receive remote URLs without a registry entry.
Reviews
There is no documentation or usage tutorial
By Henry Douglas (henrydouglas) on September 9, 2024
There is no documentation or usage tutorial. Therefore, with the developer's guidance through a tutorial, it is difficult to know how to configure it correctly.
Not copy to s3
By masconexion on July 11, 2023
Insufficient documentation.
Plugin work
By tarasshynkler on April 1, 2022
Plugin is tested and works fine
By SoftSprint (softsprint) on May 21, 2021
Didnt work for me
By murilozilli on April 14, 2021
Changelog
1.0.6
- Add an upload registry, incremental uploads, and safe deletion of tracked files with local and Media Library restoration.
- Introduce batch uploads with clearer progress reporting.
- Serve registered files through S3 or CloudFront, including responsive images and common lazy-load markup.
- Redesign settings with a searchable folder tree and a resizable directory list.
- Improve credential protection, configuration saving and AWS connection checks.
- Bundle AWS SDK for PHP 3.401.2 through Composer with official unused-service removal; retain S3, CloudFront and required SDK dependencies. Require WordPress 6.2+ and PHP 8.1+.
1.0
- Stable tested version with the latest WordPress