0

我正在使用 Amazon Connect 并将通话录音存储在一个区域中。

我在另一个区域有 Amazon Transcribe,我遵循了如何使用 Amazon Transcribe 创建音频转录本 | AWS将音频文件转换为脚本格式。步骤看起来很简单。

但是,当我在 Amazon Transcribe 中单击 Create (将连接生成的录音文件转换为 Transcript)时,它会抛出错误:录音在其他区域(在我的情况下这是预期的,因为录制的(音频文件)不在同一区域)

您提供的 S3 URI 指向错误的区域。确保存储桶位于 XXX-XXX 区域,然后重试您的请求。

xxx-xxxAmazon Transcribe 的区域在哪里。预计录音(音频文件)将位于同一区域。

但:

  1. 有没有办法用音频文件公开 S3 存储桶,以便也可以从其他区域访问它?
  2. 如果没有,解决这个问题的另一种方法是什么?
4

1 回答 1

1

“有没有办法暴露 S3 存储桶……?”

事实证明,暴露水桶不是问题。存储桶在物理上始终恰好位于一个区域中,但如果请求者拥有适当的授权凭证并且没有策略明确拒绝访问,则可以从所有区域以及从 AWS 外部访问。

但是 S3 中关于存储桶的任何内容都无法更改以修复您遇到的错误,因为问题出在其他地方 - 而不是 S3。

Amazon Transcribe Developer Guide中的 API 数据类型:

MediaFileUri

输入媒体文件的 S3 位置。URI 必须与您调用的 [Amazon Transcribe] API 终端节点位于同一区域。

https://docs.aws.amazon.com/transcribe/latest/dg/API_Media.html

Transcribe 旨在不跨越区域边界访问存储桶中的媒体,如果您尝试使用您收到的消息,则会阻止您。

为什么它会这样工作?可能是性能/效率。可能是安全。可能是为了帮助不知情的用户避免跨区域数据传输的意外计费费用。可能还有其他原因,可能与上述原因相结合。

可能的解决方案:

  • 使用 Connect、S3 存储桶和 Transcribe,都在同一个区域;或者
  • 使用两个存储桶和S3 跨区域复制将文件从 Connect 区域复制到 Transcribe 区域。请注意,这在规模上会产生巨大的成本,因为 S3 正在跨越区域边界移动数据。请进一步注意,复制速度很快但不是即时的,因此对 Transcribe 的调用可能无法找到已到达第一个存储桶但尚未到达第二个存储桶的媒体;或者
  • 使用两个存储桶,并在您的代码中调用 S3 的 PUT+Copy API 以将文件复制到 Transcribe 区域中的第二个存储桶,然后再调用 Transcribe。
于 2019-10-23T10:28:51.037 回答