fspringveldt/ss-easy-s3

There is no license information available for the latest version (dev-master) of this package.

Seamlessly integrates assets (including themes folder) along with css and js. Enabling CloudFront is simply a config change.

Installs: 4 829

Dependents: 0

Suggesters: 0

Security: 0

Stars: 6

Watchers: 3

Forks: 4

Open Issues: 3

Type:silverstripe-module

dev-master 2020-07-09 06:39 UTC

This package is auto-updated.

Last update: 2024-10-09 15:24:08 UTC


README

Seamlessly integrates assets,theme assets, css and js with S3 - with optional CloudFront CDN.

Minimum requirements

silverstripe/framework: ^3.5.*
silverstripe/cms: ^3.5.*
aws/aws-sdk-php: ^3.18

Installation and Setup

To install, run below from root of SilverStripe installation

> composer require fspringveldt/ss-easy-s3

http://your-site-url?flush=1 once composer is complete the flush the manifest.

Once installed and configured, head on over to Amazon, create an account and bucket. Below are some resources you can use to assist during this process.

Once your Amazon info is sorted, you'll need the following info from the Amazon console:

  • key
  • secret
  • region
  • bucket
  • url
  • distribution-id

...which is then input into your mysite the config file as:

S3Facade:
  config:
    dev:
      key:
      secret:
      region:
      bucket:
      url:
      distribution-id:
    test:
      key:
      secret:
      region:
      bucket:
      url:
      distribution-id:
    live:
      key:
      secret:
      region:
      bucket:
      url:
      distribution-id:

NB: You can setup multiple configs per environment . A simple flush should complete your setup.

This module will automagically re-write all your URL's to point to the resources from either the S3 Bucket or CloudFront url you specified.

Deleting local files

You now also have the option to delete local files and only keep those in S3, which is switched off by default. To enable this functionality, do the following:

  1. Add this config entry
Image:
    keepLocal: false
  1. Then schedule the task called RemoveLocalCopies to run at a comfortable interval to remove these files. An example cron entry reflects below, replacing everything in square brackets with correct values
*/5 * * * * [path-to-php-binary] [path-to-application]/framework/cli-script.php dev/build

An example on ubuntu: */5 * * * * /usr/bin/php /var/www/example/framework/cli-script.php dev/build

Migrate to S3 build-task

There is also a handy tool which will upload entire directories to your S3 bucket blisteringly fast. You can specify which directories to upload via the _ config/config.yml file by adding more entries to the migrationFolders property. The assets folder is added by default.

Working with local environment

  1. Download certificate file

  2. Copy it inside ss-easy-s3/ root directory (assuming ss-easy-s3 folder is inside project root directory)

  3. Add some additional config below inside the config array() in setupS3Client() and setupCloudFrontClient() method in code/classes/S3Facade.php file

     $array = array(
         'version' => ...,
         'region' => ...,
         'credentials' => ...,
         // add these lines
         'scheme'  => 'http',
         'http'    => [
             'verify' => '../ss-easy-s3/cacert.pem'
         ]
     );
    
  4. Refresh the page and test uploading image (in my case using Files page in CMS Admin)

*Note: You should disable all debug command such as Debug::show and var_dump()

References: