javascript - 如何在 React 中使用 AWS Amplify 构建视频转码器管道?
问题描述
我正在使用 AWS Amplify 和 React 构建一个 Web 应用程序。我要完成的功能是经过身份验证的用户上传视频。S3 存储桶有一个 lambda 触发器,可将视频转码为多种格式以供不同的观看者使用。这些文件被上传到一个单独的存储桶中,供 React Web App 使用。
问题是 Amplify 项目可能只有一个与之关联的存储桶。我在这里完成了一个关于使用无服务器平台的教程,它运行良好,但是当我尝试将第二个存储桶转移到我的项目中时,第二个存储桶被拒绝了。我相信直接操作 cloudformation 模板是必要的,但我不知道如何或是否可能。
AWS 提供了一些媒体转码器服务,可以完成每个作业的转码,但我不知道如何通过从 React 启动的 lambda 函数启动转码器作业,然后将结果与我的 Amplify 项目关联......
有什么建议么?
解决方案
Amplify 尚不支持多个存储桶。
在 Amplify 存储库中打开了 2 个问题:
这个:https ://github.com/aws-amplify/amplify-cli/issues/1923 这个已经关闭,建议您应该在同一个存储库上使用不同的前缀作为“最佳实践”。
但如果你不能这样做,有一些解决方法可以完成工作。
这是另一张票:https ://github.com/aws-amplify/amplify-js/issues/329
最简单的解决方案是,如果您只需要调用 aget
并且存储桶位于同一区域,那么您应该需要这样做
Storage.get(key1, {bucket: 'other-bucket'});
另一种解决方案是召回configure
Amplify.configure({
...
Storage: {
bucket: 'other-bucket', //REQUIRED - Amazon S3 bucket
region: 'XX-XXXX-X', //OPTIONAL - Amazon service region
}
});
这有点烦人,但如果存储桶位于不同的区域并且您需要不同的操作,那么这是迄今为止唯一的解决方案get
推荐阅读
- api - API 速率限制是如何实现的?
- r - 如何忽略点形式的缺失数据?
- python - 如何使用python遍历多个excel文件
- java - Flutter - 找不到捆绑的 Java 版本
- amazon-web-services - 自定义 AWS 身份提供商 iOS 权限消息
- django - 通过简单 JWT 的 Django 身份验证类适用于本地查看,但不适用于 Elastic Beanstalk 生产服务器
- php - 登录后如何为“auth()”函数添加新值?
- cluster-analysis - 基于参数的集群排序
- javascript - reactjs中的“未捕获的语法错误:无法在模块外使用导入语句”错误
- node.js - 当外部模块使用 Array.isArray() 时,无服务器失败并显示“您可能需要适当的加载程序来处理此文件类型”