S3 通知在其他区域调用 sqs 主题

S3 Notifications invoke sqs topic in other region

我有一个存储桶,我在 US-EAST-1 中配置了 SQS,在美国西加利福尼亚州区域中配置了 S3 存储桶,有什么方法可以配置来自其他区域的 SQS,以便在调用时调用s3 事件

可以在

时设置事件通知

S3 - 同一地区 - 同一账户 SQS - 同一地区 - 同一账户

S3 - 同一地区 - 不同账户 SQS - 同一地区 - 在另一个账户中

不工作

S3 - 不同地区 SQS - 不同地区

有人可以帮帮我吗?

跨区域 Amazon S3 事件不适用于 Amazon SNS,因此它们可能也不适用于 Amazon SQS。参见:

部分选项:

  • 触发 AWS Lambda 函数将消息推送到其他区域的 SQS 队列中,或者
  • 使用跨区域复制将桶复制到其他区域并从那里触发事件

The Amazon SQS queue must be in the same region as your Amazon S3 bucket.

https://docs.aws.amazon.com/AmazonS3/latest/user-guide/setup-event-notification-destination.html

不支持 S3 跨越区域边界向 SQS 发送通知的配置。文档中没有具体说明原因。

但有一个解决方法。

us-west-1 中的 S3 存储桶可以向 us-west-1 中的 SNS 主题发送事件通知,us-east-1 中的 SQS 队列可以订阅 us- 中的 SNS 主题west-1... 所以 S3 (us-west-1) → SNS (us-west-1) → SQS (us-east-1) 是这里的解决方案。在队列订阅主题后,您可能需要在订阅上启用 "raw message delivery" 选项,否则消息格式将与您期望的不同,否则 SNS 将向原始事件通知负载添加一个外部包装器。

您可以 now send S3 notifications to EventBridge, from there send them to EventBridge in another region 然后将它们转发到 SQS。