【发布时间】:2020-04-20 17:11:34
【问题描述】:
这不是一个编程问题,但我认为这是提出这个问题的正确地方。
我的应用程序是部署在 AWS ec2 中的 Spring Boot 应用程序,服务器是 t3.micro,只有 1gb 内存。该应用程序本身非常稳定并且运行顺畅。 但是当我尝试通过同一台服务器上传文件时,服务器堆空间被耗尽并且应用程序被杀死。所有文件都存储在 s3 中。 有时我可能需要上传最大 1Gb 的文件
我一直在考虑完全使用 AWS lambda 来满足我的文件上传和下载需求,这是一个好方法吗?如果有人遇到过类似的问题并使用其他方法解决了,请告诉我。欢迎提出任何建议。
或者,如果我需要遵循一些不会占用堆空间的文件上传操作,那也会很有帮助。在某些时候,同一台服务器可能有大约 3k RPM。
我想的流程是client -> API Gateway -> Lambda -> S3
【问题讨论】:
-
如果我明白你的意思......不,使用 Lambda 代理 S3 上传不是一个好方法。您的 web 应用程序应该向您的客户提供有时间限制的预签名 URL。然后,您的客户端可以将文件直接上传到 S3。
-
我试图使用 AWS API Gateway 创建一个 post API 并直接从客户端访问端点,然后触发 lambda 函数并返回路径
-
是的,您可以让您的客户端通过 API Gateway 调用 Lambda,并让 Lambda 返回一个 S3 预签名的 PUT URL,如果这就是您所说的“返回路径”的话。
标签: amazon-web-services aws-lambda architecture