S3 事件如何触发 VPC 中的 Lambda 函数?

How can an S3 event trigger a Lambda Function in a VPC?

我有一个问题。我尝试 google 它但找不到特定于我的查询的答案。

S3 是一项全球服务。我们可以通过互联网或使用私有网络中的 VPC 端点访问它。我明白了。

如果 VPC 中存在 lambda 函数。那么s3事件如何触发lambda函数呢?

您必须区分 Lambda 服务、Lambda 函数和执行上下文。

Lambda 服务运行Lambda 函数,执行上下文是Lambda 函数的一个实例。 只有执行上下文位于 VPC 中。其余组件位于 VPC 之外。 Lambda 服务始终可以与任何特定 Lambda 函数的执行上下文通信,以将事件传递给它并监控执行。它通过私有通道而不是通过 VPC 来实现。

S3 也不是 真正的 全球服务。存储桶和 API 位于特定区域。它有一个全局命名空间,这意味着存储桶名称必须是全局唯一的。这意味着一些 API 会进行“全局检查”,但是当 S3 起作用时,它会在一个区域内起作用。

让我们谈谈 S3-Lambda 集成中发生的事情。当存储桶中发生事件(例如创建对象)时,S3 服务会检查哪些端点对此事件感兴趣。如果您想将事件发送到 Lambda 函数,它必须与存储桶位于同一区域。然后,S3 将联系 Lambda 服务并告诉它使用此特定事件调用 Lambda 函数。 S3不关心这里的结果。

这是 Lambda 接管的地方。该服务检查是否允许 S3 调用相关函数。如果是这种情况,它将检查不忙的函数的现有执行上下文。一旦发现 一、将事件发送到Execution Context,在VPC内部执行,可以访问VPC中的资源。

假设一切顺利,这就是它的结局,否则,Lambda 将在另一个执行上下文中重试该事件。

参考资料