当 S3 和 Lambda 位于不同区域时,如何使用 S3 事件通知触发跨区域 Lambda 函数
Posted
技术标签:
【中文标题】当 S3 和 Lambda 位于不同区域时,如何使用 S3 事件通知触发跨区域 Lambda 函数【英文标题】:How to trigger cross region Lambda function using S3 event notification when S3 and Lambda are in different regions 【发布时间】:2022-01-02 22:55:47 【问题描述】:场景:
-
我们在区域 1(例如俄勒冈)有一个 S3 存储桶
我们在区域 2(例如法兰克福)有一个 Lambda 函数
我们已将 S3 配置为在将对象添加到存储桶时发送事件通知
问题:
我们需要使用区域 1 中生成的 S3 事件通知来调用区域 2 中的 Lambda。 我们知道允许使用 Lambda 进行跨账户 S3 事件配置。但是如何实现跨Region事件和lambda调用!
我们的想法:
我们曾考虑在 S3 和 Lambda 之间使用 SNS,但不确定是否有其他可用的替代方案,或者这是唯一的方法。任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:如你所说,最直接的方法是在中间使用 SNS:
-
Region1 S3 通知有一个 Region1 SNS 主题目标
Region2 Lambda 有一个 cross-region subscription 到 Region1 SNS 主题
S3 不能直接跨地域发送通知。
您也可以让 S3 将创建的项目复制到 Region2,此时 Region2 S3 可以直接通知 Region2 Lambda,如果项目很小且延迟不是大问题,这可能会起作用。
【讨论】:
感谢@fedonev,由于合规性原因,我认为复制不是一种选择,但还有一个问题,我的 Lambda 可以订阅的 SNS 数量是否有限制?我的意思是,如果我在 10 个不同的区域创建 S3 存储桶,是否可以将所有 S3 事件路由到一个 Lambda? 很高兴为您提供帮助! lambda 订阅中没有 documented limit。以上是关于当 S3 和 Lambda 位于不同区域时,如何使用 S3 事件通知触发跨区域 Lambda 函数的主要内容,如果未能解决你的问题,请参考以下文章
“GetObject 时发生错误。S3 错误代码:PermanentRedirect。S3 错误消息:存储桶位于此区域:us-east-1