reactjs - 如何从客户端在 S3 中上传大型媒体文件?
问题描述
我有一个表单,用户从客户端提交图像。目前,我正在使用 AWS amplify 将图像上传到 s3。到目前为止,我还没有遇到过问题,因为大多数时候用户选择的图像小于 5MB。但是现在我需要扩大这个限制并优化性能,因为尺寸限制增加了。当我研究性能时,我了解了传输加速及其与 AWS SDK 的兼容性,但不了解 AWS Amplify。因此,我不得不将上传逻辑移至 SDK。我在后端遵循的架构是无服务器和 Lambda 的。假设用户提交了他的表单,请求周期包含大小为 10MB 的图像。但是 lambda 不会处理这个请求,因为 lambda 请求-响应周期被限制为 6MB 事务。我怎样才能提高性能,随着尺寸限制的增加?此外,它可以通过 AWS 放大自身来实现吗?
解决方案
您的用例最好使用 S3 预签名 url。在这种情况下,您的 lambda 函数使用 aws-sdk 生成一个用于 s3 上传的 url,并且只返回您前端的 url。然后,您可以从前端直接上传到此 url,而无需再次调用 AWS Lambda。所有数据传输都将在您的前端和 S3 之间进行。
您可以在此处找到有关此解决方案的更多详细信息。
推荐阅读
- javascript - interactjs 将 dragevent 传递给降低 zIndex
- azure - Azure Synapse、Azure SQL 数据库、Azure 托管实例和本地 SQL Server 中的跨数据库查询
- mongodb - 尝试为 mongodb 编写 liquibase 迁移更改日志
- spring - JPA 与 Kotlin 解决先有鸡还是先有蛋的问题
- flutter - Flutter 使用 provider 在导航栏上模拟一个动作
- linux - windows和Linux gcc编译器之间奇怪的字节对齐
- macos - 在 DNS A 记录更改后,dig 和 nslookup 在 Mac OS X 上显示相同域名的不同结果
- python - 更改列 Python 中的值
- javascript - 输入 HTML 的 getter 和 setter
- python - Klaviyo API 获取数据