簡體   English   中英

發送編碼后的圖像,並在解碼后上傳到s3

[英]Sending image as encoded and uploading to s3 after decoding it

我正在嘗試在s3上上傳非常繁重的文件。 現在,圖像首先進入服務器溫度,然后將其上傳到s3。 但是,此過程很費時間,如果多個用戶同時上傳大量圖像,則會消耗大量帶寬,這會影響生產站點。 鑒於我還有3個要上載的尺寸,因此我正在調整上載圖像的大小,並將其他3個已調整尺寸的圖像與此一起發送到s3。

我對此進行了研究,發現了這3種可能的解決方案。

  1. 將圖片直接上傳到s3 ..這是可以排除的,因為在這種情況下,我們必須公開aws鍵,但不能這樣做。
  2. 將所有圖像添加到隊列中並運行少量作業 ..在這種情況下,作業將在調整大小后稍后將它們從服務器上載到s3。 排除了這一點,因為這也會消耗一些帶寬,並且肯定會影響服務器性能,而且我們還配置了aws-eb,因此,一旦部署服務器,映像將丟失,因此不再使用。
  3. 在這種情況下, 使用javascript ..我們將圖像從javascript編碼為base64,並將使用ajax將圖像發送到服務器,然后嘗試將其解碼並保存到某處,然后將其上傳到s3。

因此,我的問題是,使用第3個選項是否可以節省上傳較重圖像的時間? 我可以將編碼后的圖像發送到服務器,但是會節省用戶上載的時間嗎?

如果沒有,那么在將沉重的圖像上傳到s3時我還能做些什么以節省服務器的時間和帶寬。 請幫忙。

如果有可能,您應該直接上傳到Amazon S3 這避免了文件的“雙重處理”,並且是一種更具可擴展性的解決方案。

您擔心“公開AWS密鑰”。 無需擔心。 您可以使用Security Token Service 生成具有有限權限集的臨時,有時間限制的憑證 它是這樣工作的:

  • 您的應用程序對用戶進行身份驗證並檢查他們是否有權將對象上傳到Amazon S3
  • 您的應用程序調用安全令牌服務,並請求一組具有權限的臨時憑證,這些權限僅允許上傳到Amazon S3中的特定存儲桶和子目錄
  • 將這些憑據傳遞給您的用戶,或在網頁中使用它們,以允許他們上傳對象

AWS的關鍵概念是大規模設計。 直接上傳到Amazon S3使這成為可能,而上傳到您自己的服務器首先會造成瓶頸(並且花費更多的錢!)。

在處理圖像處理時,實際上2號是推薦選項。 您還可以使用Lambda函數進行圖像轉換。 http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html

將映像添加到特定的S3存儲桶后,將立即觸發作業。

如果需要,您還可以將圖像直接上傳到S3( http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html

我不確定您是否已執行此操作,但是我已經使用javascript sdk進行了此操作,我正在通過將圖像保存到另一台服務器上,然后將它們移至s3上來執行操作,但是使用javascript sdk可以直接轉到s3,您可以添加事件以在圖像到達后對其進行處理。

  • 使用Cognito可以獲取未經身份驗證的用戶/經過身份驗證的用戶的訪問權限。
  • 在相關存儲桶中以“授權用戶”身份授予權限。
  • 在配置編輯器中編輯CORS。
  • 使用javascript sdk中的代碼執行所需的操作。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM