如何从AWS Elastic BeanStalk获取更新的“uploads”文件夹?

时间:2016-11-23 07:03:55

标签: node.js amazon-web-services express amazon-elastic-beanstalk

我在弹性beanstalk中托管了我的服务器端编码。我使用multer上传'upload'文件夹中的文件,这意味着使用api,客户端可以动态地在这个'upload'文件夹中存储图像或pdfs等。当我在ebs中托管.zip时,说有3个文件存储在uploads文件夹中。托管后会添加更多文件。现在,如果我更改代码并将代码部署到ebs,则会创建空上载文件夹。如果我下载以前的代码,我只收到托管时那里的3个文件。我无法取回代码托管后添加的文件。如何克服这个?

1 个答案:

答案 0 :(得分:0)

在ElasticBeanstalk上托管应用程序的第一条规则是您的代码应该是无状态的。对于无状态,我的意思是它根本不应该依赖于机器,因为实例会根据扩展要求创建和关闭。

我所做的就是做你说的一切,把它上传到上传文件夹然后我把它存储在S3(或者如果实例终止它是安全的)。所以基本上uploads文件夹只是一个临时位置。

动态创建的内容不应该是代码库的一部分。

当您部署新版本时,无法获取丢失的数据,部署代码的目录将被删除,并在那里复制新版本。我相信它的/var/app/current/

每当您想要在将来处理上传时,您应该遵循:

  1. 将其上传到实例上的临时目录
  2. 将其上传到安全的地方(可能是AWS S3),
  3. 将安全存储中的对象链接(S3链接)保存到数据库中,以便您可以根据需要进行上传。