我正在構建一個Django應用程序。該應用程序允許用戶上傳文件,並將其公開地提供給其他用戶。用於將s3/cloudfront與數據庫同步的體系結構
我正在考慮使用S3或CloudFront來管理和提供這些文件。 (爲了討論起見,我們將其稱爲S3)。讓我感到困擾的是S3將會在其上有很多狀態。我的Python代碼將根據用戶操作在S3上創建,重命名和刪除文件。但是我們已經擁有了數據庫中的所有狀態。在兩個單獨的數據存儲中存在狀態可能會導致同步問題和混淆。換句話說,它「不應該」不同步。例如,如果有人從django管理員中刪除數據庫中的記錄,s3上的文件將保持孤立。 (我可以編寫代碼來處理這種情況,但我無法捕捉到所有場景。)
所以我在想什麼:是否有一種解決方案讓您的S3與您的Postgres數據庫中的數據自動同步? (我將這些文件存儲爲數據庫中的blob沒有問題,只要它們不直接從那裏提供,它們就不是那麼大)。我說的是讓一個活躍的程序始終保持它們之間的同步,所以如果有人刪除數據庫中的記錄,s3中的相應文件被刪除,並且如果有人從S3接口刪除文件,它將從數據庫重新創建。這樣我的頭腦可以放心地解決同步問題。
有沒有這樣的事情?最好在Python中。
我看着你的兩個包。第一個看起來像是用於靜態而不是媒體文件(儘管它的名字是這樣),並且它沒有以任何方式更新,第二個看起來被放棄了。你在答案中提出的解決方案可能會有效......但我仍然希望能夠使用一個軟件包。 –