AWS 放大存储 |上传大文件
Posted
技术标签:
【中文标题】AWS 放大存储 |上传大文件【英文标题】:AWS Amplify Storage | Upload large file 【发布时间】:2021-08-26 10:34:49 【问题描述】:使用 AWS Amplify Storage,将文件上传到 AWS S3 应该很简单:
Storage.put(key, blob, options)
上述方法适用于较小的文件,(不超过 4MB 左右)。
上传任何更大的东西,例如。一个 25MB 的视频,不起作用:Storage
只是冻结(应用程序不会冻结,只有 Storage
)。不返回错误。
问题:如何使用 AWS Amplify Storage 上传较大的文件?
旁注:所描述的行为同时出现在 android 和 ios 上。
【问题讨论】:
【参考方案1】:Amplify 现在会自动将大文件分割成 5Mb 的块并使用 Amazon S3 分段上传流程上传它们
https://aws.amazon.com/about-aws/whats-new/2021/10/aws-amplify-javascript-file-uploads-storage/
https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-process
【讨论】:
看起来像另一个“隐藏”的 AWS Amplify 错误。那么,正确的答案是什么?迁移到更新的 Amplify 版本? 我已经使用最新版本的 Amplify(在撰写本文时为 7.6.5)测试了超过 100mb 的文件,它可以正常工作 “当我们使用旧版本的 aws-amplify”:“^3.1.1”时,出现了像您提到的问题(问题的作者)。”【参考方案2】:更新后
"aws-amplify": "ˆ4.3.11",
"aws-amplify-react-native": "^6.0.2"
超过 100MB 的上传不再冻结 UI + 我们还迁移到 resumable uploads。当我们使用旧版本的 aws-amplify": "^3.1.1" 时,出现了您提到的问题。
以下是 2021 年 12 月针对上述修复的拉取请求: https://github.com/aws-amplify/amplify-js/pull/8336
所以解决方案真的是升级 AWS Amplify 库。
不过,这种方法也适用于 iOS。 在 Android 上上传大型媒体文件会导致调用 fetch 时出现网络错误(作为调用 Storage.put 方法之前的必需步骤)。
【讨论】:
以上是关于AWS 放大存储 |上传大文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AWS Elastic Beanstalk 上的 Nodejs 应用程序上启用大文件的上传?