0

我在彈性beanstalk中託管了我的服務器端編碼。我使用multer上傳'upload'文件夾中的文件,這意味着使用api客戶端能夠將圖像或pdf等動態存儲在此「上傳」文件夾中。當我在ebs中託管.zip時,假設有3個文件存儲在uploads文件夾中。託管後添加更多文件。現在,如果我更改我的代碼並將我的代碼部署到ebs,則會創建空的上傳文件夾。如果我下載了以前的代碼,我只收到了託管時的3個文件。代碼託管後,我無法取回添加的文件。如何克服這一點?如何從AWS Elastic BeanStalk獲取更新的「上傳」文件夾?

回答

0

在ElasticBeanstalk上託管應用程序的第一條規則是您的代碼應該是無狀態的。無狀態,我的意思是它不應該依賴於機器,因爲根據縮放需求創建和關閉實例。

我所做的是做你說的一切,上傳它來上傳文件夾,但然後我將它存儲在S3(或者在某些情況下,如果實例終止,它是安全的)。所以基本上上傳文件夾只是一個臨時的位置。

動態創建的內容不應該是您的代碼庫的一部分。

無論何時您部署新版本,您都無法獲取丟失的數據,其中部署代碼的目錄將被刪除,並且新版本將被複制到那裏。我相信它的/var/app/current/

每當你想以應對未來的上傳,你應該遵循:

  1. 其上傳到實例的臨時目錄,
  2. 其上傳到某個地方是安全的(也許有點像AWS S3 ),
  3. 將安全存儲中的對象鏈接(S3鏈接)保存到數據庫中,以便您可以獲取上傳。