Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services EC2上带有ELB和S3的文件上载API_Amazon Web Services_Architecture_Amazon Ec2_Amazon S3_Amazon Elb - Fatal编程技术网

Amazon web services EC2上带有ELB和S3的文件上载API

Amazon web services EC2上带有ELB和S3的文件上载API,amazon-web-services,architecture,amazon-ec2,amazon-s3,amazon-elb,Amazon Web Services,Architecture,Amazon Ec2,Amazon S3,Amazon Elb,我正在用NodeJS和AWS开发appserver 我正在使用ELB和EC2s设置服务器环境 我使用ELB作为负载平衡器,并将几个AppServerEC2实例连接到它 一个EC2实例用于MongoDB 我的问题是关于请求,包括文件上传 我认为上传的文件不应该在appserver(EC2实例)中,所以我将尝试将上传的文件保存在S3中,并允许appserver(EC2实例)访问它 粗略的解决方案是,如果应用服务器从客户端接受文件,将其移动到S3并删除应用服务器上的文件 但是这样会造成一些性能损失,我

我正在用NodeJS和AWS开发appserver

我正在使用ELB和EC2s设置服务器环境

我使用ELB作为负载平衡器,并将几个AppServerEC2实例连接到它

一个EC2实例用于MongoDB

我的问题是关于请求,包括文件上传

我认为上传的文件不应该在appserver(EC2实例)中,所以我将尝试将上传的文件保存在S3中,并允许appserver(EC2实例)访问它

粗略的解决方案是,如果应用服务器从客户端接受文件,将其移动到S3并删除应用服务器上的文件

但是这样会造成一些性能损失,我觉得这不是一种干净的方式

这是最好的方式吗?或者有另一种解决方法

我认为这是将文件上传到S3的最佳方式

但该文件与其他数据一起上传。(例如,配置文件上载-名称:字符串、年龄:编号、配置文件图像:文件)

我需要在AppServer上处理其他数据,所以客户端不应该直接上传到S3

还有更好的办法吗

请救救我


附言:如果你不能理解我的表达,请告诉我,因为我不是本地人。如果是这样的话,我会用我最好的解释来补充

您可以使用允许最终用户向您写入的临时凭据直接上载到S3

这里有一篇很好的文章,详细介绍了如何使用node.js执行您正试图执行的操作

引用外部链接的答案不受欢迎,因此简言之:

  • 在应用程序中包括aws sdk
  • 为其提供适当的凭据
  • 使用这些凭据生成具有短生命周期的签名URL
  • 向最终用户提供他们可以用来上传的签名URL,最好是与进度反馈异步上传

谢谢@chris。我正试图用你的答案解决这个问题,但还有一个问题。我成功地获得了预先签名的url,并且可以直接从浏览器将图像上传到S3(我正在使用PostMan:GoogleChrome扩展进行测试)。但是每个上传的图像文件都被破坏了。该文件已上载,其字节与原始文件相同(我没有严格检查)。但在下载图像文件并执行后,我收到消息-文件无法打开。它的文件格式已损坏或无法识别。(我上传了png和jpeg文件)。有什么解决办法吗?我为此奋斗了2天之久。