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

How to enable one region to another in AWS

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

我在另一个地区有 Amazon Transcribe,我按照 How to create an audio transcript with Amazon Transcribe | AWS 将音频文件转换为转录格式。步骤看起来很简单。

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

The S3 URI that you provided points to the incorrect region. Make sure that the bucket is in the XXX-XXX region and try your request again.

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

但是:

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

"Is there a way to expose the S3 bucket...?"

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

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

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

MediaFileUri

The S3 location of the input media file. The URI must be in the same region as the [Amazon Transcribe] API endpoint that you are calling.

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

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

为什么会这样?可能 performance/efficiency。可能是安全。可能是为了帮助不知情的用户避免跨区域数据传输的意外账单费用。可能是其他原因,可能与上述原因结合。

可能的解决方案:

  • 使用 Connect、S3 存储桶和 Transcribe,都在同一区域;或
  • 使用两个桶和 S3 Cross-Region Replication 将文件从 Connect 区域复制到 Transcribe 区域。请注意,由于 S3 正在跨区域边界移动数据,因此此 ca 的成本很高。请进一步注意复制速度很快但不是瞬时的,因此调用 Transcribe 可能无法找到已到达第一个桶但尚未到达第二个桶的媒体;或
  • 使用两个存储桶,并在您的代码中调用 S3 的 PUT+Copy API,在调用 Transcribe 之前将文件复制到 Transcribe 区域中的第二个存储桶。