跳转到主要内容

允许您在云端存储大文件

项目描述

https://travis-ci.org/netsight/netsight.cloudstorage.svg?branch=master

netsight.cloudstorage

支持将Plone文件数据安全地卸载到云端。

本软件包提供以下两项功能:

  • 将大文件卸载到云端

  • 将视频转码为兼容网络格式的格式

  • 以不绕过Plone安全模型的方式安全执行

目前这是通过Amazon Web Services(S3用于云存储,Elastic Transcoder用于转码)实现的,但可能扩展以支持其他云存储服务。

文件数据首先存储在Plone中,然后同步到云端。随后的文件数据请求将被重定向到唯一的自动过期云URL(这可以防止数据被未经授权访问)。

需求

上传由Celery异步处理,您需要配置一个受支持的代理

Buildout配置

您需要在您的buildout中添加以下内容

  • netsight.cloudstorage egg到“eggs”

  • 一个用于构建celery的部分(例如,使用collective.recipe.celery)

  • broker_urlplone_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.cfgredis.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 (29.9 kB 查看散列)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面