Drupal s3fs public file storage configuration

Note Statistics

Note Statistics

  • Viewed 412 times
  • 1 Grateful readers
Sat, 07/25/2020 - 19:16

The s3fs module adds a additional file storage with the stream s3://. By default Drupal provides 2 streams public:// and private://.

After installing this module you should see and additional option labeled Amazon Simple Storage Service or S3 File System

Managing public files

Two options are available for public files

Option 1 - Default

This option gives more granular control but requires you to set the system to use S3 storgae where you want. You would need to update the configuration on these screens

  • Text format:/admin/config/content/formats/manage/<format name>. For example admin/config/content/formats/manage/full_html where formal is full_html
  • FIle settings: /admin/config/media/s3fs to update the Default download method
  • Image field settings: e.g./admin/structure/types/manage/article/fields/node.article.field_image/storage. This is required for every file field.

The disadvantage here is that you are required to update general system configurations, text formats storage and all file fields separately. Other modules using the public file would also need to be updated separately.

Option 2 - Use S3 for all public files

This option automatically use S3 for all public files. Saving you the need to reconfigure different settings. To do this you should update the settings.php as below

$settings['s3fs.use_s3_for_public'] = TRUE;

This change the first option on setting page Public local files served by the webserver. to Public files served from Amazon S3

This options has some disadvantages. S3 is used for processing all public files and this affects php twig files. You should change your php twig storage folder to a local directory, php twig files in S3 produce latency and security issues (these files would be public). You must change the php_storage settings in your setting.php and choose a directory, out of docroot recommended.

Update you settings.php to something like this

$settings['php_storage']['twig']['directory'] = '../storage/php';
Authored by