簡體   English   中英

AWS / Django-是否將私人用戶上傳的文件保存到S3或EC2實例上?

[英]AWS / Django - do I save private user uploaded files to S3 or on my EC2 instance?

我有一個Django Web應用程序,該應用程序允許用戶上傳其顯示圖片。 一些用戶可以看到此顯示圖片,但不是所有人(不是所有用戶)都可以訪問該圖片。 話雖如此,在開發中,我曾經將其保存在本地計算機上。 在我的設置文件中,

MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'

然后Django會將所有用戶上傳的顯示圖片保存到我機器上的媒體庫(uPhotosFolder)中。

話雖如此,我已部署(或至少正在嘗試部署)該應用程序,並且當我將MEDIA_ROOT和MEDIA_URL留在我的設置文件中為

MEDIA_ROOT = '/home/myProfile/Documents/thisFolder/uPhotosFolder'
MEDIA_URL = '/media/'

並嘗試上傳圖片,它說訪問被拒絕。 顯然,我必須進入我的EC2實例(我使用Amazon Web Services)並創建

'/home/myProfile/Documents/thisFolder/uPhotosFolder'

目錄,然后開始保存顯示圖像。

我的問題是,這是在服務器上保存私人用戶上傳的圖像的正確/最佳方法嗎? 還是我也應該為此使用S3? (據我了解,S3上的圖像存儲在雲中,任何人都可以通過URL進行訪問)現在有沒有辦法針對我的情況使用S3?

是否將映像存儲在文件夾中的EC2實例上還是S3存儲上的問題與文件隱私無關。

MEDIA_ROOT定義媒體文件夾的位置。 MEDIA_URL定義提供媒體時形成的URL。

現在,如果使用默認文件系統存儲進行存儲,則最終將文件保存在MEDIA_ROOT中。 我們可以通過設置文件中的一些附加配置將存儲更改為S3。 文檔在這里

現在,可以通過限制對URL的訪問來完成基於用戶的文件保護。 為此,可以使用X-Accell-Redirect標頭保護媒體URL,而標頭在使用nginx提供文件時使用(例如: here )。 萬一您繼續使用S3存儲來提供媒體文件(在生產環境中更可取)-S3存儲提供了獲取媒體受保護URL的功能,該URL可傳遞給客戶端以檢索媒體。 這些URL在有限的時間段內具有可訪問性。

暫無
暫無

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

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