2012-07-06 16 views
0

我想用我的C#逻辑生成一个特殊格式的大文件(几TB),并将其保存到S3。做这个的最好方式是什么。我可以在EC2中启动节点,然后将大文件写入EBS,然后使用S3 .net Clinent库将文件从EBS上传到S3。使用.NET在s3内部生成一个大文件

我可以流式传输文件内容,因为我在代码中生成了文件内容,并直接将文件内容传输到S3,直到专门处理这种大文件和内存不足问题为止。我可以看到这个代码帮助流,但它听起来像流应该已经填满了。我显然不能将这样的数据存储到内存中,也不希望先将它作为文件保存到磁盘中。

PutObjectRequest request = new PutObjectRequest(); 
     request.WithBucketName(BUCKET_NAME); 
     request.WithKey(S3_KEY); 
     request.WithInputStream(ms); 
     s3Client.PutObject(request); 

什么是我最好的选择,生成这个大文件ans流到S3,因为我生成它?

+1

我想这可能会帮助你http://stackoverflow.com/questions/8653146/can-i-stream-a-file-upload-to-s3-without-a-content-length-头 – Alex 2012-07-09 10:14:20

回答

1

你当然可以上传任何文件高达5 TB的限制。我建议使用流媒体和多部分放置操作。上传文件1TB在这个过程中可能会很容易失败,并且您必须完成所有操作,并在存储时将其分解为多个部分。另外你应该知道,如果你需要修改文件,你需要下载文件,修改文件并重新上传。如果你打算修改文件,我建议尝试将它分成更小的文件。

http://docs.amazonwebservices.com/AmazonS3/latest/dev/UploadingObjects.html