我会使用我的C#逻辑生成一个特殊格式的大文件(几TB)并将其保存到S3。做这个的最好方式是什么。我可以在EC2中启动一个节点,然后将大文件写入EBS,然后使用S3 .net Clinent库将文件从EBS上传到S3。
我可以在我的代码中生成文件内容流并直接将其流式传输到S3,直到专门针对此类大文件和内存不足问题进行生成。我可以看到这个代码帮助流,但听起来像流已经填满了。我显然不能将这样的数据加载到内存中,也不希望先将它作为文件保存到磁盘中。
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName(BUCKET_NAME);
request.WithKey(S3_KEY);
request.WithInputStream(ms);
s3Client.PutObject(request);
生成这个大文件的最佳选择是什么?在生成它时将其流式传输到S3?
答案 0 :(得分:1)
你当然可以上传任何最高5 TB的文件,这是限制。我建议使用流媒体和多部分放置操作。上传文件1TB可能很容易在此过程中失败,您必须全部执行此操作,在存储时将其分解为多个部分。此外,您应该知道,如果您需要修改文件,则需要下载文件,修改文件并重新上传。如果您计划完全修改文件,我建议您尝试将其拆分为较小的文件。
http://docs.amazonwebservices.com/AmazonS3/latest/dev/UploadingObjects.html