关于跨账户 s3 和 lambda 集成的建议

Advise on cross account s3 and lambda integration

有两个账户:

Account-A(我们的团队不拥有此服务)-> s3 Bucket (exampleBucket) 位于。

账户 B(我们团队拥有)-> Lambda 函数 (myLambda)

每当在 s3 存储桶 (exampleBucket) 中创建新对象时,我们都需要执行 Lambda 函数 (myLambda)。

我至少找到了两种方法:

S3(事件通知)-> Lambda

S3(事件通知)-> SNS 主题-> Lambda 从 SNS 读取通知

S3(事件通知)-> SQS 主题-> Lambda 从 SQS 读取通知

附加信息:

  1. Lambda和S3都在同一个区域(不同的AWS账户)

  2. 假设我们拥有所有必要的权限

  3. 我们每(~5 秒)在桶中获取一个新对象

  4. 有足够的 Lambda(并发执行)来处理所有调用。

我需要如何确定哪个更好,根据:

  1. 延迟(在 S3 中创建对象的时间 - 执行 Lambda 函数)

  2. 维护

  3. 监控

  4. 扩展(我假设因为所有服务都由 AWS 管理,所以这应该不是问题)

我会考虑您所关注的工作负载类型以及未来可能的用例。

  1. 您认为 Lambda 调用经常会失败吗?如果是这样,能够重试处理事件对您来说重要吗?如果是这样,配置了 DLQ 的 SQS 或 SNS 将是不错的选择。
  2. 您是否预计将来会根据这些事件挂接其他 Lambda 或其他下游操作?如果是这样,您可能希望使用 SNS 来添加多个订阅。
  3. 您打算如何将更新部署到 Lambda?如果您偶尔希望能够离线进行更改,使用 DLQ 来接收无法送达的通知会有所帮助。

延迟不太可能成为问题,因为你们在同一地区。

也可以使用 SNS 或 SQS 轻松设置监控。您可以根据 SNS 的失败传递、DLQ 中的消息数量等设置 CloudWatch 警报。