需要建议:如何与远程用户共享可能很大的报表?
Need advice: How to share a potentially large report to remote users?
我正在征求有关我正在从事的项目部分可能更好的解决方案的建议。我会先介绍一些背景,然后是我目前的想法。
背景
- 我们的客户可以使用我公司的产品来生成潜在的 大型数据集 以用于他们的行业。当数据集生成后,客户将向我们提出处理请求。
- 我们想向客户发送一封摘要电子邮件,其中包含一些统计图表以及数据集中的采样点,以便他们可以进行一些初步的质量控制工作。如果数据集质量不好,他们不需要提交任何请求。
- 一个问题是图表和采样点可能可能太大而无法通过电子邮件发送。我们要包含在电子邮件中的图表和采样点是图片。虽然我们可以使用JPEG等低质量格式来保存space,但我们无法控制摘要电子邮件中包含多少数据集,因此总大小仍可能超过正常电子邮件大小限制。
- 在技术方面,我们主要在Ubuntu14.04Python开发。
解决方案的目标
- 一般来说,我们希望向客户呈现类似报告的东西,以进行一些初步的质量检查。该报告可能包含外部链接,但不需要非常互动。换句话说,静态报告应该没问题。
- 我们希望减少客户阅读报告必须执行的步骤或事情。例如,如果报告可以只是一封电子邮件,则用户只需 1)。登录和 2)。打开电子邮件。如果他们使用客户端软件,他们可以跳过 1)。然后打开并开始阅读。
- 我们还希望为我们和我们的客户减轻维护额外用户帐户的负担。比如这个方案需要我们注册一个新的用户账号,这个方案虽然还可以,但是排名不是很高
- 安全很重要,因为我们的客户不希望未经授权的第三方阅读他们的报告。
- 我们希望流程自动化。我们希望解决方案提供编程接口,以便我们可以自动化报告 sending/sharing 过程。
- 性能不是关键问题。我们的用户群并不大。我认为最多有数百个。他们也不那么频繁地生成数据,最多每周一次。我们不需要实时响应。即使延迟几个小时也可以接受。
我目前的解决方案
- 可能的解决方案 #1:内部 Web 服务。我可以设置一台服务器机器并开发我们自己的网络服务。我们将报告存入我们的数据库,然后客户可以通过互联网查询。
- 可能的解决方案 #2:亚马逊网络服务。 AWS 相当成熟,但我不确定它们是否会很昂贵,因为到目前为止我们只想与我们的远程客户共享一份报告,这看起来使用 AWS 并不是什么大事。
- 可能的解决方案 #3:Google 驱动器。我知道 Google Drive 提供 API 以编程方式进行上传和共享,但我认为我们需要注册一个专用的 Google 帐户才能使用它。
有更好的解决方案吗??
您可以使用 AWS S3 和 Cloudfront。使用 AWS SDK 和 API 可以轻松地将文件加载到 S3 中。然后,您可以使用 API 生成指向文件的安全链接,这些文件只能在特定时间打开,并且可以选择从特定 IP 打开。
如果需要,也可以使用生命周期规则在特定时间后自动清理 S3 上的文件。
AWS 的存储和传输价格相当便宜,请记住,S3 存储成本是按月计算的,因此如果您只加载一个对象几天,那么您只需支付几天的费用。
S3: http://aws.amazon.com/s3/pricing
云端:https://aws.amazon.com/cloudfront/pricing/
以下是适用于 AWS 的 SDK 列表:
https://aws.amazon.com/tools/#sdk
或者您可以将他们的命令行工具用于 Windows 批处理或 powershell 脚本:
https://aws.amazon.com/tools/#cli
以下是有关如何创建私人内容网址的一些信息:
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
我建议结合使用您的#1 和#2 选项来构建此服务。您可以利用非常便宜的 AWS S3 进行处理和传输数据。
示例:100GB 的费用约为 3 美元。
此外,AWS S3 也将是有益的,因为您可以承受本地环境中的任何灾难,您的数据在 S3 中将是安全的。
为了安全起见,您可以在 AWS S3 中利用数据加密和签名 URLS。
我正在征求有关我正在从事的项目部分可能更好的解决方案的建议。我会先介绍一些背景,然后是我目前的想法。
背景
- 我们的客户可以使用我公司的产品来生成潜在的 大型数据集 以用于他们的行业。当数据集生成后,客户将向我们提出处理请求。
- 我们想向客户发送一封摘要电子邮件,其中包含一些统计图表以及数据集中的采样点,以便他们可以进行一些初步的质量控制工作。如果数据集质量不好,他们不需要提交任何请求。
- 一个问题是图表和采样点可能可能太大而无法通过电子邮件发送。我们要包含在电子邮件中的图表和采样点是图片。虽然我们可以使用JPEG等低质量格式来保存space,但我们无法控制摘要电子邮件中包含多少数据集,因此总大小仍可能超过正常电子邮件大小限制。
- 在技术方面,我们主要在Ubuntu14.04Python开发。
解决方案的目标
- 一般来说,我们希望向客户呈现类似报告的东西,以进行一些初步的质量检查。该报告可能包含外部链接,但不需要非常互动。换句话说,静态报告应该没问题。
- 我们希望减少客户阅读报告必须执行的步骤或事情。例如,如果报告可以只是一封电子邮件,则用户只需 1)。登录和 2)。打开电子邮件。如果他们使用客户端软件,他们可以跳过 1)。然后打开并开始阅读。
- 我们还希望为我们和我们的客户减轻维护额外用户帐户的负担。比如这个方案需要我们注册一个新的用户账号,这个方案虽然还可以,但是排名不是很高
- 安全很重要,因为我们的客户不希望未经授权的第三方阅读他们的报告。
- 我们希望流程自动化。我们希望解决方案提供编程接口,以便我们可以自动化报告 sending/sharing 过程。
- 性能不是关键问题。我们的用户群并不大。我认为最多有数百个。他们也不那么频繁地生成数据,最多每周一次。我们不需要实时响应。即使延迟几个小时也可以接受。
我目前的解决方案
- 可能的解决方案 #1:内部 Web 服务。我可以设置一台服务器机器并开发我们自己的网络服务。我们将报告存入我们的数据库,然后客户可以通过互联网查询。
- 可能的解决方案 #2:亚马逊网络服务。 AWS 相当成熟,但我不确定它们是否会很昂贵,因为到目前为止我们只想与我们的远程客户共享一份报告,这看起来使用 AWS 并不是什么大事。
- 可能的解决方案 #3:Google 驱动器。我知道 Google Drive 提供 API 以编程方式进行上传和共享,但我认为我们需要注册一个专用的 Google 帐户才能使用它。
有更好的解决方案吗??
您可以使用 AWS S3 和 Cloudfront。使用 AWS SDK 和 API 可以轻松地将文件加载到 S3 中。然后,您可以使用 API 生成指向文件的安全链接,这些文件只能在特定时间打开,并且可以选择从特定 IP 打开。
如果需要,也可以使用生命周期规则在特定时间后自动清理 S3 上的文件。
AWS 的存储和传输价格相当便宜,请记住,S3 存储成本是按月计算的,因此如果您只加载一个对象几天,那么您只需支付几天的费用。
S3: http://aws.amazon.com/s3/pricing
云端:https://aws.amazon.com/cloudfront/pricing/
以下是适用于 AWS 的 SDK 列表: https://aws.amazon.com/tools/#sdk
或者您可以将他们的命令行工具用于 Windows 批处理或 powershell 脚本: https://aws.amazon.com/tools/#cli
以下是有关如何创建私人内容网址的一些信息: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html
我建议结合使用您的#1 和#2 选项来构建此服务。您可以利用非常便宜的 AWS S3 进行处理和传输数据。
示例:100GB 的费用约为 3 美元。
此外,AWS S3 也将是有益的,因为您可以承受本地环境中的任何灾难,您的数据在 S3 中将是安全的。
为了安全起见,您可以在 AWS S3 中利用数据加密和签名 URLS。