Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Drupal Core 10.1 has moved CSS and JS aggregation storage to the "assets://" streamWrapper. This means that in the latest versions of Drupal aggregated CSS and JS files will no longer be stored in the S3 bucket.
This module enables you to utilize S3-compatible storage as a Drupal filesystem.
The module doesn't sufficiently prevent file access across multiple filesystem schemes stored in the same bucket.
This vulnerability is mitigated by the fact that an attacker must obtain a method to access arbitrary file paths, the site must have public or private takeover enabled, and the file metadata cache must be ignored.
This module enables you to utilize S3-compatible storage as a Drupal filesystem.
The module doesn't sufficiently prevent file access across multiple filesystem schemes stored in the same bucket.
This vulnerability is mitigated by the fact that an attacker must obtain a method to access arbitrary file paths, the site must have public or private takeover enabled, and the file metadata cache must be ignored.
This release fixes a significant bug in beta1 where upload_as_private was not being honored causing the release to break on buckets that have BlockPublicACL enabled.
Improved D9 compatibility, general enhancements and general bugfixes.
This release aims to primarily fix known issues inside of S3FS. This release does not fix all known issues however it is believed this release improves on alpha16, especially as it relates to D9, to justify publication while work continues on the rest of the issue queue.
The issues not included in this fix appear to be primarily related to metadata cache rebuild, file migration and less common bugs. Development will continue on known issues.
A cache rebuild should be performed after deploying this code as this release makes changes to existing services declarations and adds additional services. More information on steps to rebuild the cache can be found in the Clearing the Cache Guide.
Issue #2915322 by mikeryan, semjuel, aguilarm, firewaller, scaldinglake, jansete: Image styles: Error generating image, missing source file
Issue #3106533 by jkswoods, sidharthap, jansete: Drupal 9 Deprecated Code Report
Issue #3111978 by pajor, jansete: Provide a way to alter configuration
Issue #3022288 by rlhawk, francescoben, douggreen: Support path-style endpoints
Issue #2978948 by Dylan Donkersgoed, jansete: Drush 8 command does not respect scheme option
Issue #2974302 by valic, bandanasharma: [README.txt] Image styles issues on Nginx web server
Implements upload as private.
Issue #3016824 by nrackleff: Notice: Undefined index: s3fs_use_versioning
Issue #2981730 by ron_s: Copy system images to S3 when rendering direct paths to CSS/JS files
Issue #2969063 by ron_s: Allow domain name to map directly to root path
Issue #2998618: Reverted the AWS Secret Key field back to a textfield.
Issue #2996206 by eddie_c: each() deprecated in PHP 7.2 : Port patch from D8 to D7
Issue #2900237 by eddie_c: PDOException: SQLSTATE[22001]: String data, right truncated
Issue #2983481: Updated the list of available S3 Regions in the settings.
Issue #2979162 by lambic: Add Canada to region list
Issue #2884388: Fixed broken stream_stat() method in S3fsStreamWrapper.
Issue #2886878 by Lams: "Refresh file metadata cache" fails in MySql 5.7.5+
Issue #2632082: Bugfix for VersionId=='null'.
Issue #2957905 by ckitchens: Conditional Authorization for a Multi-Site / Single S3 Bucket Environment
Issue #2958566 by ckitchens, coredumperror: Allow S3 Versioning as a Configurable Option
Issue #2974070 by ron_s: Option to block access to S3 URLs if using a domain name
Batch integration (Drush and UI compatible) to improve migrate files performance.
Use new Messenger service instead deprecated drupal_set_message().
Drush 9 port commands.
Important issue:
Issue #2772721 by jansete, MickeA, Berdir, geerlingguy, naveenvalecha, chrowe: Use Settings for AWS S3 secret_key and access_key instead of config system. You must move your secret_key and access_key from $config or settings form to $settings.
Example:
$config['s3fs.settings']['access_key'] now is $settings['s3fs.access_key']
$config['s3fs.settings']['secret_key'] now is $settings['s3fs.secret_key']
Issue #2861975 by wouters_f, skek, jansete, joelfp, raymond880824: Implements image style generation like Drupal 7
Issue #2878923 by id.tarzanych, didaka, George Bills: S3FS works wrong if there are more than 1000 files in a bucket
Issue #2865254 by wouters_f: smal ux change for the s3 settings
Issue #2866256 by jansete, raymond880824: After login the sites, some image cannot display in the website
Issue #2866314 by jansete: Notice: Undefined index: use_instance_profile en Drupal\s3fs\S3fsService->getAmazonS3Client()
Get correct s3fsMetadata.
Simplify admin route checking.
Avoid exceptions in administration pages.
Fix interface typing.
Issue #2863781 by nachosalvador: Coding standards S3fsStream
Issue #2863757 by nachosalvador: Coding standards S3fsService
Issue #2860159 by jansete: Exception in admin/config/media/file-system when s3fs is enabled but not configured
Issue #2860160 by jansete: Fix CSS static urls only if use_s3_for_public is enabled
The main features of 7.x-2.x and 7.x-3.x branches are ported to Drupal 8 and the most important issues are solved. We will resolve issues, add tests and review performance to get beta version.
PLEASE NOTE: If you installed 2.9 and ran a database update, your s3fs_awssdk2_use_instance_profile variable may be set wrong. Please double check its value by going to
admin/config/media/s3fs and confirming that the "Use EC2 Instance Profile Credentials" checkbox has the value you expect.
As 2.10 is coming out as an emergency fix for 2.9 less than a day later, I'm repeating the patch notes from 2.9 here:
Issue #2853778 by jansete: Config form does not display region "EU - London (eu-west-2)"
Issue #2821971 by prince_zyxware, jansete: Fix coding standard - spacing issues
Issue #2851983: Removed the largely pointless cache for s3fs_file table reads.
Issue #2858314: Corrected rmdir()'s improper SQL queries.
Issue #2771979 by minakshiPh, chrowe, jansete, naveenvalecha: Update Readme.txt instructions for drupal 8
Issue #2854321 by jansete: Move _s3fs_convert_metadata to S3fsStream class
Issue #2854304 by jansete: Replace deprecated methods and functions
Issue #2854294 by jansete: Replace deprecated check_url by UrlHelper::filterBadProtocol()
Issue #2812747 by rhett.prichard, jansete: drush s3fs-copy-local can not find the exception class?
Issue #2854039 by jansete: Replace deprecated drupal_dirname by \Drupal::service('file_system')->dirname()
Issue #2825806: Wrong bucket policy example in README.
Issue #2833958 by Shashwat Purav: Add Asia Pacific (Mumbai) Region.
Issue #2833981 by Shashwat Purav, krina.addweb: Remove extra single quote from README.txt
Issue #2826372: The new stream_metadata() API is now implemented.
Issue #2464031 by FluxSauce, catbear: Add support for very large object counts
#2496033 by steel-track: Refactored the module to use AWS SDK v3. Also, refactored the stream wrapper to inherit from the AWS SDK's S3 streamwrapper wherever possible.
#2496033 by steel-track: Refactored the module to use AWS SDK v3. Also, refactored the stream wrapper to inherit from the AWS SDK's S3 streamwrapper wherever possible.
Issue #2803121: Added support for the Seoul region.
Issue #2724389: Added option to upload new image derivatives, instead of redirecting.
Issue #2549161: S3fsStreamWrapper.mkdir() now trims trailing slashes.
Ending slashes are now trimmed off of folders at import time.
Removed unused target_folder variable from _s3fs_copy_file_system_to_s3()
First Alpha release.
In the next releases it will include the features that has not yet ported in d8.
Follow the meta issue https://www.drupal.org/node/2568589