0

我正在使用NodeJS和AWS開發應用程序服務器。使用ELB和S3在EC2上進行文件上傳API

我正在使用ELB和EC2設置服務器環境。

我正在使用ELB作爲負載均衡器並將多個應用程序服務器EC2實例附加到它。

一個EC2實例用於MongoDB。

我的問題是關於請求,包括文件上傳。

我想上傳的文件不應該在應用服務器(EC2實例)中,所以我會嘗試保存上傳的文件到S3中,並允許應用服務器(EC2實例)訪問它。

粗略的解決方案是,如果應用程序服務器接受來自客戶端的文件,請將其移至S3並刪除應用程序服務器上的文件。

但是它會導致一些性能損失,我不覺得這是一個乾淨的方式。

這是最好的方式嗎?或者有另一種解決方法。

我認爲這是上傳文件到S3的最好方法。

但文件與其他數據一起上傳。 (例如,配置文件上傳 - 名稱:字符串,年齡:號碼,profileImage:文件)

我需要處理應用服務器上的其他數據,所以客戶端不應直接上傳到S3。

有沒有更好的主意?

請保存我。

P.S:請讓我知道你是否因爲我不是本地人而無法理解我的表情。如果是這樣,我會盡我所能爲它添加一些解釋!

回答

0

您可以使用允許最終用戶寫信給您的存儲桶的臨時憑證直接上傳到S3。

有一篇很好的文章,詳細介紹瞭如何使用node.js here來做什麼。

答案引用外部鏈接時對SO皺起了眉頭,所以簡而言之:

  • 包括在應用程序中的AWS SDK
  • 它提供相應的憑據
  • 使用這些憑據來生成具有較短使用期限的簽名網址
  • 爲最終用戶提供可用於上傳的簽名網址,最好與進度反饋異步提供
+0

謝謝@chris。我試圖用你的答案解決問題,但還有另外一個問題。我成功地獲得了預先簽名的url,並且可以直接從瀏覽器上傳圖片到S3(我正在使用post-man進行測試:google-chrome擴展)。但是每個上傳的圖像文件都被破壞了。該文件已上傳,其字節與原來的相同(我沒有嚴格檢查)。但是在下載完圖像文件並執行後,我得到了消息 - 文件無法打開。它是破損或無法識別的文件格式。 (我上傳文件PNG和JPEG文件)。任何解決方案嗎?我爲此奮鬥了2天。 – 2014-12-09 06:01:33