lesaff / processwire-s3cloudfront
用于与 ProcessWire CMS/CMF 一起使用的 AWS S3 和 CloudFront 同步。
Requires
- php: ^7.1||^8.0
- aws/aws-sdk-php: ^3.186
- hari/pw-module: ~1.0
This package is auto-updated.
Last update: 2024-08-29 05:56:01 UTC
README
版本:1.0.0
此模块/插件提供了一种同步、服务和备份 ProcessWire 管理员上传的所有页面文件到 Amazon S3/CloudFront 的方法。这是由 Nmendes 制作的原始模块的分支。
要求
- ProcessWire 3.x;
- Amazon AWS PHP SDK(包含在内);
- 启用 S3 和 CloudFront 服务的 AWS 账户;
- S3 存储桶和具有适当权限的用户:"s3:PutObject","s3:GetObject","s3:DeleteObject" 和 "s3:PutObjectAcl";
- 指向 S3 存储桶的 CloudFront 分发。
安装
将所有文件放入 /site/modules/S3Cloudfront/ 中,然后转到管理员>模块>检查新模块,并安装。
您需要通过输入您的 AWS 访问密钥和秘密密钥以及您要存储文件的 S3 存储桶名称来配置该模块。我已设置视频和用户策略文档,以帮助您了解如何进行此操作。
它是如何工作的
模块/插件在您将文件添加到 ProcessWire 管理员中的页面时立即将其上传到 S3。它模仿您定义的 S3 存储桶中的 PW 资产结构。(/S3BUCKET/PAGE_ID/files)。
PW 页面上删除的文件也将立即从 S3 删除,但您可以选择创建另一个文件夹在 S3 上的备份。
该模块支持使用 Antti Peisa 的 缩略图模块(FieldtypeCropImage) 1.0.3 来创建图像缩略图,如果安装了此模块,则会相应地上传和修改缩略图。
注意:由 PW 管理员(例如:filename_0x100.jpg)本地图创建的缩略图是从本地资产文件夹提供,而不是上传到 S3。
如果为使用此模块的 S3 存储桶创建了分发,则模块可以自动从 Amazon CloudFront 提供内容。文件 URL 自动替换。
您可以为设置 Cache-Control 指令和浏览器和 CloudFront 的缓存时间设置一定数量的秒数。更多信息请参阅此处。
该模块有一个选项,用于与 CloudFront 一起使用文件版本控制,它会自动通过添加时间戳(例如:yourfilename-v1403782033.jpg)来重命名上传的所有文件。这将使每个文件名都是唯一的,因此更容易管理文件的缓存。我建议您使用此选项,否则可能会很难替换 Amazon 已缓存的文件。
问题
此模块的版本将仅处理安装后上传的新文件。如果您页面上已有文件,则不会上传到 S3,并且您可能会因为 PW 中的文件与 S3 中的文件不匹配而出现错误。
如果您使用 ProcessWire 的本地大小(size)方法(例如:$image->size(232, 176))创建图像缩略图,则它们不会自动上传到 S3。此问题应该很快就会得到解决,因为 PW 的开发分支已经具有此方法可挂钩。
备注
本 PROCESSWIRE 模块/插件按原样提供,并且仅应用于测试目的。自行承担风险。作者不对使用 Amazon AWS 产生的任何数据丢失或成本承担责任。
版权所有2014年,由Nelson Mendes 电子邮件 分支和修改者Rudy Affandi(2021) 电子邮件
为 ProcessWire 构建