我的API服務器的磁盤空間(500MB)和內存(1GB)非常有限。它獲得的API調用之一是接收文件。消費者調用API並傳遞要下載的URL。如何使用curl將文件從一臺服務器流式傳輸到另一臺服務器(受限服務器資源)
我的服務器的「目標」是將此文件上傳到Amazon S3。不幸的是,我不能要求消費者直接將文件上傳到S3(部分要求)。
問題是,有時候那些大文件(10GB)並將它們保存到磁盤,然後將其上傳到S3不是一個選項(500MB磁盤空間限制)。
我的問題是,如何使用curl Linux程序將文件從輸入url「管道化」到S3?
注意:我可以通過不同的方式管它,但是,它首先嚐試下載整個文件並失敗,或者我遇到了內存錯誤和捲曲退出。我的猜測是,下載速度比上傳快得多,所以當我獲得10GB文件時,管道緩衝區/內存會增加並爆炸(服務器上的1GB內存)。
有沒有辦法實現我正在嘗試使用捲曲和管道做的事情?
謝謝 - 傑克
你的服務器是如何實現的?大多數編程語言應該允許你在代碼中「流入/流出」,這樣你一次就不會在內存中留下太多內容。如果這不是一個選項,那麼你最好的選擇可能是向實例添加一個適中的EBS卷(比如說100GB)並將其用作臨時登臺區域。 – stdunbar
@stdunbar - 我不想進入太多的內部細節,我更喜歡「調用」捲曲並完成這項工作。如果可行,太棒了!如果不是,我將不得不採取其他方式,我會採納你的建議。泰 – Joe