Author: AustinMaddox
Extension Description: A phpBB extension that utilizes Amazon Web Services (AWS) Simple Storage Service (S3) as the filesystem for uploaded files. This extension allows you to run multiple servers behind a load balancer without worrying about which servers filesystem the image got uploaded to. No more trying to synchronize the filesystems since any server that handles the request will reference the image from your S3 bucket, not the local filesystem.
Local filesystems are dead.
Remote filesystems are the future.
Cloud is the new normal.
Death to the monolith!
I feel like it is critical in this distributed computing day-in-age to store user-generated content in some sort of easily-accessible cloud storage. Amazon S3 provides secure, durable, highly-scalable cloud storage at a very low cost.
In a perfect world, phpBB would share a philosophy of a filesystem like Laravel does. Laravel provides a powerful filesystem abstraction thanks to the Flysystem PHP package by Frank de Jonge. I understand that splitting uploaded files storage into separate class(es) has been proposed in PHPBB3-14169, but as of the time of this writing it has not yet been merged.
This may only be one step towards a fully distributed phpBB application that is capable of running in a clustered environment; but, at least it is moving in the right direction. By leveraging the AWS cloud we can run phpBB with increased flexibility, scalability and reliability.
Extension Version: 1.0.0
Requirements:
- This extension requires PHP >= 5.5.0.
- To successfully send requests to AWS APIs, you need to have a valid set of security credentials called access keys. To learn more about AWS access keys, visit the About Access Keys page in the developer documentation.
- You must run
composer install
in the directory of this extension to install the required dependencies.
- Utilizes AWS PHP SDK Version 3.
- Access keys, AWS region, and S3 bucket are configurable via the ACP.
- When enabled, uploaded attachments will be written to the local filesystem of the server as well as uploaded to the S3 bucket of your choosing.
- Attachment images on topic pages will reference your images on S3 rather than the local filesystem. (ie. http://your-s3-bucket.s3.amazonaws.com/thumb_2_424f080177ab2cc3b9880b592527d115
- Attachments that are deleted, will also be deleted from your S3 bucket.
- Both fullsize and resized thumb images are uploaded to S3.
- Images are uploaded with
public-read
ACL so your images are publicly visible via the web.
- Possible CloudFront global content delivery network (CDN) distribution configuration.
- [ABD] Using Amazon S3 Simple Storage
- Amazon S3 cloud storage extension
- AWS SDK for PHP 3.x
- AWS Tips I Wish I'd Known Before I Started
Extension Download:
https://github.com/AustinMaddox/phpbb-extension-s3/archive/master.zip
I welcome any suggestions, feedback, questions, co-contributors, and pull requests.
https://github.com/AustinMaddox/phpbb-extension-s3