如何在 React 中使用 AWS Amplify 构建视频转码器管道?

How to build a Video Transcoder Pipeline with AWS Amplify in React?

我正在使用 AWS Amplify 和 React 构建 Web 应用程序。我要实现的功能是经过身份验证的用户上传视频。 S3 存储桶有一个 lambda 触发器,可以将视频转码为多种格式供不同的观众使用。这些文件被上传到一个单独的桶中,​​该桶将由 React Web App 使用。

问题是 Amplify 项目可能只有一个与之关联的存储桶。我完成了关于使用无服务器平台 here 的教程,效果很好,但是当我尝试将第二个存储桶转移到我的项目中时,第二个存储桶被拒绝了。我相信直接操作 cloudformation 模板是必要的,但我不知道如何或是否可能这样做。

AWS 提供了一些媒体转码器服务,可以完成每个作业的转码,但我不知道如何通过从 React 启动的 lambda 函数启动转码器作业,然后将结果与我的 Amplify 项目相关联....

有什么建议吗?

Amplify 尚不支持多个桶。

在 Amplify 存储库上打开了 2 个问题:

这个:https://github.com/aws-amplify/amplify-cli/issues/1923 这个已关闭,建议您应该在与 "best practice".

相同的存储库上使用不同的前缀

但如果您做不到,也有一些解决方法可以完成这项工作。

这是另一张票:https://github.com/aws-amplify/amplify-js/issues/329

最简单的解决方案是,如果您只需要调用 get 并且存储桶位于同一区域,那么您应该需要执行

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

不同的操作,这是目前唯一的解决方案