2012-07-06 17 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