关于跨账户 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 读取通知
附加信息:
Lambda和S3都在同一个区域(不同的AWS账户)
假设我们拥有所有必要的权限
我们每(~5 秒)在桶中获取一个新对象
有足够的 Lambda(并发执行)来处理所有调用。
我需要如何确定哪个更好,根据:
延迟(在 S3 中创建对象的时间 - 执行 Lambda 函数)
维护
监控
扩展(我假设因为所有服务都由 AWS 管理,所以这应该不是问题)
我会考虑您所关注的工作负载类型以及未来可能的用例。
- 您认为 Lambda 调用经常会失败吗?如果是这样,能够重试处理事件对您来说重要吗?如果是这样,配置了 DLQ 的 SQS 或 SNS 将是不错的选择。
- 您是否预计将来会根据这些事件挂接其他 Lambda 或其他下游操作?如果是这样,您可能希望使用 SNS 来添加多个订阅。
- 您打算如何将更新部署到 Lambda?如果您偶尔希望能够离线进行更改,使用 DLQ 来接收无法送达的通知会有所帮助。
延迟不太可能成为问题,因为你们在同一地区。
也可以使用 SNS 或 SQS 轻松设置监控。您可以根据 SNS 的失败传递、DLQ 中的消息数量等设置 CloudWatch 警报。
有两个账户:
Account-A(我们的团队不拥有此服务)-> s3 Bucket (exampleBucket) 位于。
账户 B(我们团队拥有)-> Lambda 函数 (myLambda)
每当在 s3 存储桶 (exampleBucket) 中创建新对象时,我们都需要执行 Lambda 函数 (myLambda)。
我至少找到了两种方法:
S3(事件通知)-> Lambda
S3(事件通知)-> SNS 主题-> Lambda 从 SNS 读取通知
S3(事件通知)-> SQS 主题-> Lambda 从 SQS 读取通知
附加信息:
Lambda和S3都在同一个区域(不同的AWS账户)
假设我们拥有所有必要的权限
我们每(~5 秒)在桶中获取一个新对象
有足够的 Lambda(并发执行)来处理所有调用。
我需要如何确定哪个更好,根据:
延迟(在 S3 中创建对象的时间 - 执行 Lambda 函数)
维护
监控
扩展(我假设因为所有服务都由 AWS 管理,所以这应该不是问题)
我会考虑您所关注的工作负载类型以及未来可能的用例。
- 您认为 Lambda 调用经常会失败吗?如果是这样,能够重试处理事件对您来说重要吗?如果是这样,配置了 DLQ 的 SQS 或 SNS 将是不错的选择。
- 您是否预计将来会根据这些事件挂接其他 Lambda 或其他下游操作?如果是这样,您可能希望使用 SNS 来添加多个订阅。
- 您打算如何将更新部署到 Lambda?如果您偶尔希望能够离线进行更改,使用 DLQ 来接收无法送达的通知会有所帮助。
延迟不太可能成为问题,因为你们在同一地区。
也可以使用 SNS 或 SQS 轻松设置监控。您可以根据 SNS 的失败传递、DLQ 中的消息数量等设置 CloudWatch 警报。