如何在AWS中将一个区域启用到另一个区域

时间:2019-10-23 01:36:41

标签: amazon-web-services amazon-s3 aws-lambda aws-sdk amazon-connect

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

我在另一个地区有Amazon Transcribe,然后我按照How to create an audio transcript with Amazon Transcribe | AWS将该音频文件转换为字幕格式。步骤似乎非常简单。

但是,当我单击“在Amazon Transcribe中创建”(以转换通过connect连接到Transcript生成的音频记录文件)时,它会抛出错误:该记录在其他区域(在我的情况下是预期的),因为录音(音频文件)不在同一区域)

  

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

其中xxx-xxx是Amazon Transcribe的区域。预计录音(音频文件)在同一区域。

但是:

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

1 个答案:

答案 0 :(得分:1)

  

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

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

但是S3中有关存储桶的任何内容都不能更改以解决您遇到的错误,因为问题出在其他地方-不是S3。

根据 Amazon Transcribe开发人员指南中的API数据类型:

  

MediaFileUri

     

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

     

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

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

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

可能的解决方案:

  • 使用Connect(一个S3存储桶)和Transcribe(都在同一区域);或
  • 使用两个存储桶和S3 Cross-Region Replication将文件从“连接”区域复制到“转录”区域。请注意,由于S3正在移动数据穿越区域边界,因此这在规模上具有巨大的成本。还要注意,复制是快速的,但不是瞬时的,因此对Transcribe的调用可能无法找到已到达第一个存储桶但尚未到达第二个存储桶的媒体。或
  • 使用两个存储桶,并在调用Transcribe之前,在代码中调用S3的PUT + Copy API将文件复制到Transcribe区域中的第二个存储桶。