首页 > 解决方案 > 如何从客户端在 S3 中上传大型媒体文件?

问题描述

我有一个表单,用户从客户端提交图像。目前,我正在使用 AWS amplify 将图像上传到 s3。到目前为止,我还没有遇到过问题,因为大多数时候用户选择的图像小于 5MB。但是现在我需要扩大这个限制并优化性能,因为尺寸限制增加了。当我研究性能时,我了解了传输加速及其与 AWS SDK 的兼容性,但不了解 AWS Amplify。因此,我不得不将上传逻辑移至 SDK。我在后端遵循的架构是无服务器和 Lambda 的。假设用户提交了他的表单,请求周期包含大小为 10MB 的图像。但是 lambda 不会处理这个请求,因为 lambda 请求-响应周期被限制为 6MB 事务。我怎样才能提高性能,随着尺寸限制的增加?此外,它可以通过 AWS 放大自身来实现吗?

标签: reactjsamazon-s3aws-lambdaaws-sdkaws-amplify-sdk-js

解决方案


您的用例最好使用 S3 预签名 url。在这种情况下,您的 lambda 函数使用 aws-sdk 生成一个用于 s3 上传的 url,并且只返回您前端的 url。然后,您可以从前端直接上传到此 url,而无需再次调用 AWS Lambda。所有数据传输都将在您的前端和 S3 之间进行。

您可以在此处找到有关此解决方案的更多详细信息。


推荐阅读