使用AWS Kinesis进行大文件上传

4
我的客户有一个存储大量文件的服务,例如视频或音频文件。该服务运行良好,但似乎长期文件存储是一个挑战,我们希望使用AWS来存储这些文件。
问题在于,客户想要使用AWS Kinesis将每个文件从我们的服务器传输到AWS。这可能吗?我们能否使用该服务传输文件?有许多视频文件,而且我们每天都会得到更多。而且每个文件都相对较大。
我们还希望将某些文件详细信息保存到dynamoDB中,我们可以使用Lambda函数来实现。
最重要的是,我们需要一个可靠的数据传输选项。

1
如果您想从服务器上传文件,您应该编写一个程序或获取一个利用多部分上传的工具。请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html。这将稳定并加速向AWS S3传输的速度。 - John
谢谢John,你能告诉我像这样的上传方法有多可靠吗? - sz tech
@sz_tech 它非常可靠。如果出现故障,S3会保留片段化的多部分上传,直到您明确完成或删除它。 - John
3个回答

6
KInesis并不适合上传大文件,因为它的记录大小限制为1MB。如果您要上传视频等大型文件,则KInesis很可能无法胜任。更多信息请查看 https://aws.amazon.com/kinesis/streams/faqs/

谢谢你,Brennan。那么,什么是正确的工具呢?最重要的是服务必须可靠。你能帮我吗? - sz tech
1
S3将成为在AWS生态系统中存储文件的首选服务。 - E.J. Brennan
是的,我们想使用S3来存储数据。但是我们希望找到最可靠的传输选项。我们希望立即将文件传输到S3存储桶中,并在部署完成后删除本地副本。在删除本地副本之前,我们希望确保文件已完全上传到S3。 - sz tech
2
您可以直接使用S3 API和/或AWS-cli S3 cp或sync命令来复制文件,并在其周围包装一些自定义代码以确保在删除之前已经接收到 - 这就是我会做的事情。 - E.J. Brennan
1
如果您想要进行多部分操作,Aws CP命令有点混乱,并且实际上不允许您真正处理故障,因此对于大型文件集而言,可能会带来更多麻烦。但是,AWS高级支持提供了此处的说明。我建议编写Java代码以满足您的特定需求。 - John
如果您的数据以TB为单位,则可以尝试使用AWS Snowball将数据放入S3存储桶中。 - Nischay

2
使用SDK之一的多部分上传功能将对象上传至S3。90天内不需要访问的对象可以移至Glacier。
多部分上传允许您将单个对象作为一组部分上传。每个部分都是对象数据的连续部分,可以独立上传并以任何顺序上传这些对象部分。如果某个部分的传输失败,您可以重新传输该部分而不影响其他部分。在上传完对象的所有部分后,Amazon S3会组装这些部分并创建对象。通常情况下,当对象大小达到100 MB时,应考虑使用多部分上传,而不是在单个操作中上传对象。
为了进一步优化文件上传速度,请使用传输加速:
Amazon S3传输加速可以在客户端和S3存储桶之间的长距离快速、轻松、安全地传输文件。传输加速利用Amazon CloudFront的全球分布式边缘位置。随着数据到达边缘位置,数据会通过优化的网络路径路由到Amazon S3。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接