fspringveldt / ss-easy-s3
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
Requires
- php: >=5.3
- aws/aws-sdk-php: 3.18
- silverstripe/cms: ^3.5
- silverstripe/framework: ^3.5
Requires (Dev)
- fspringveldt/ss-dockerfile: dev-master
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.
- Using CloudFront with Amazon S3
- Getting Started with CloudFront
- Syncing data with Amazon S3
- For S3 Regions!! - This one can get you hahaha
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:
- Add this config entry
Image: keepLocal: false
- 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
-
Download certificate file
-
Copy it inside
ss-easy-s3/
root directory (assumingss-easy-s3
folder is inside project root directory) -
Add some additional config below inside the config
array()
insetupS3Client()
andsetupCloudFrontClient()
method incode/classes/S3Facade.php
file$array = array( 'version' => ..., 'region' => ..., 'credentials' => ..., // add these lines 'scheme' => 'http', 'http' => [ 'verify' => '../ss-easy-s3/cacert.pem' ] );
-
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: