允许您在云端存储大文件
项目描述
netsight.cloudstorage
支持将Plone文件数据安全地卸载到云端。
本软件包提供以下两项功能:
将大文件卸载到云端
将视频转码为兼容网络格式的格式
以不绕过Plone安全模型的方式安全执行
目前这是通过Amazon Web Services(S3用于云存储,Elastic Transcoder用于转码)实现的,但可能扩展以支持其他云存储服务。
文件数据首先存储在Plone中,然后同步到云端。随后的文件数据请求将被重定向到唯一的自动过期云URL(这可以防止数据被未经授权访问)。
需求
Buildout配置
您需要在您的buildout中添加以下内容
netsight.cloudstorage egg到“eggs”
一个用于构建celery的部分(例如,使用collective.recipe.celery)
broker_url 和 plone_url 变量到您的zope实例
示例buildout配置
[buildout]
...
[celery]
recipe = collective.recipe.celery
eggs =
${instance:eggs}
netsight.cloudstorage
broker-transport = redis
broker-host = redis://localhost:6379/0
result-backend = redis
result-dburi = redis://localhost:6379/0
imports = netsight.cloudstorage.tasks
celeryd-logfile = ${buildout:directory}/var/log/celeryd.log
celeryd-log-level = info
celeryd-concurrency = 2
[instance]
...
zope-conf-additional =
<product-config netsight.cloudstorage>
broker_url ${celery:broker-host}
plone_url http://localhost:8080
</product-config>
请注意,plone_url 由 celery 工作进程使用,用于从 Plone 读取事件并发送事件到 Plone。如果您使用虚拟主机,您需要在变量中包含您的 VH 配置,例如:
plone_url http://localhost:8080/VirtualHostBase/http/www.example.com:80/Plone/VirtualHostRoot/
如果您想使用 buildout 进行配置并使用 supervisor 运行,请提供以下示例 buildout 配置。有关更多信息,请查看文件 redis.cfg 和 redis.conf.tpl。
AWS 配置
在控制面板中安装 netsight.cloudstorage 插件将为您提供“云存储设置”选项。您需要提供以下信息:
您的 AWS 访问密钥
您的 AWS 秘密访问密钥
S3 存储桶名称 这是文件将上传到的存储桶的名称。如果它不存在,则在第一次上传文件时为您创建。
最小文件大小 任何超过此大小的文件将自动发送到云端。较小的文件仍然可以手动上传。
示例 AWS 策略
以下是一个示例策略,您可以使用它来授予特定用户对特定 S3 存储桶的访问权限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::netsight-cloudstorage-mybucket",
"arn:aws:s3:::netsight-cloudstorage-mybucket/*"
]
}
]
}
有关 AWS 用户和策略的更多详细信息,请参阅 http://docs.aws.amazon.com/IAM/latest/UserGuide/access.html
工作原理
该软件包注册了一个事件订阅,用于监视新的文件字段上传。如果文件数据的大小超过上面设置的“最小文件大小”,它将注册一个 celery 任务,以异步方式将数据上传到云端。
上传完成后,celery 将通知 Plone,Plone 会生成一封电子邮件发送给内容创建者。
一旦云副本可用,该软件包将修补“下载”方法,以便任何对文件数据的请求都导致重定向到云副本。每个请求都会生成一个自动过期的单次 URL,指向云副本,确保云数据的安全性。
转码
如果控制面板中启用了此选项,则具有“视频”MIME 类型的文件也会通过转码管道发送。
此转码版本将单独存储,并且必须通过在文件下载请求中传递“transcoded=true”来手动请求,例如:
http://myplonesite/folder/myfile/at_download/file?transcoded=true
当前使用“通用 480p 16:9”预设(1351620000001-000020)进行转码。
要启用转码,您首先需要创建一个特定的 S3 存储桶来保存转码后的文件。此特定的 S3 存储桶必须像用于存储文件的存储桶一样命名,但以“-transcoded”结尾。如果您的 S3 存储桶名称为“netsight-cloudstorage-plone-storage”,则需要创建一个名为“netsight-cloudstorage-plone-storage-transcoded”的新存储桶。
然后您需要创建一个转码管道。为此,请登录到您的 AWS 账户,转到“应用程序服务”->“弹性转码”并创建一个新的管道。为管道选择一个名称(您需要在控制面板中设置此名称),将默认 S3 存储桶(“netsight-cloudstorage-plone-storage”)设置为输入存储桶,并将新的一个(“netsight-cloudstorage-plone-storage-transcoded”)设置为文件、播放列表和缩略图的输出存储桶。
待办事项
支持其他转码预设
支持其他云后端
贡献者
Ben Cole(架构和初始实现)
Matthew Sital-Singh(实现和文档)
Mikel Larreategi(改进 Dexterity 支持,并可选转码)
变更日志
1.8.1 (2016-05-06)
删除对 plone.namedfile 的依赖 [mattss]
1.8 (2016-02-09)
提供使用 buildout 安装和配置 redis 服务器的示例 [erral]
添加控制面板选项以禁用转码 [erral]
使用plone.namedfile更好地支持灵活性内容类型。现在dexterity类型的blob自动上传到云存储[erral]
允许生成不同的过期URL[benc]
当从Plone删除文件时从云中删除文件[mattss]
1.7.1 (2014-12-11)
修复了日志行问题[benc]
1.7 (2014-12-09)
处理具有多个字段的内容,其中至少有一个字段低于文件大小阈值[benc]
1.6.9 (2014-12-09)
在各个地方添加了更多详细的日志[benc]
1.6.8 (2014-12-09)
在回调任务中添加了更多详细的错误日志[benc]
在回调视图中添加了更多日志[benc]
更新了requests所需版本[benc]
1.6.7 (2014-12-08)
在upload_callback中添加更多日志以帮助调试[benc]
1.6.6 (2014-11-27)
在转码中删除了桶的创建 - 不再需要,因为没有创建管道[benc]
修复了电子邮件通知配置[benc]
1.6.5 (2014-11-27)
删除了管道创建[benc]
在控制面板中使管道名称可选[benc]
1.6.1 (2014-11-21)
添加了针对“连接由对端重置”的解决方案[benc]
1.6 (2014-11-17)
添加了禁用电子邮件通知的能力[benc]
1.5 (2014-11-06)
添加了视频文件的转码[benc]
添加了可定制的管道名称[benc]
添加了详细的README[mattss]
添加了travis配置[mattss]
1.4 (2014-10-23)
AWS转码支持![benc]
改进了对虚拟主机的支持[benc, mattss]
1.3 (2014-10-22)
半成品发布[移除姓名以保护无辜者]
1.2 (2014-09-26)
更新了通用帮助文本[mattss]
当重新排队时清除云存储设置[mattss]
1.1 (2014-09-25)
切换到分块上传[benc]
修复了下载补丁的bug[mattss]
将正确的文件名和MIME类型添加到URL生成器[mattss]
添加了手动上传触发视图[benc]
1.0 (2014-09-23)
初始发布[benc]
项目详情
netsight.cloudstorage-1.8.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | ee5c74f01dfc95dcefd96a24d57dfa669c6e62ffdc3a34b830bda303961b1fde |
|
MD5 | 4eb554bfd9a82772e0d7c64d3cc849ec |
|
BLAKE2b-256 | a2a4b8c8b644cebb605017ebe2ac6ae1a6ba303c73906929f2f8400f4b93265b |