使用 SNS 控制 AWS Lambda 并发执行
Control AWS Lambda concurrent execution with SNS
在 SNS 文档中,我可以看到一些关于交付政策和接收率的信息:
http://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html#delivery-policy-maximum-receive-rate
但是此配置是否仅适用于 HTTP 端点或 Lambda 函数?
是否可以通过 SNS 控制 lambda 并发执行?
如评论中所述,目前这似乎没有实现,但似乎确实有一个相当简单的解决方法:
SNS → API Gateway (an HTTPS endpoint) → Lambda
可以说这是不必要的额外复杂性和费用,但如果您想要一个不需要外部魔法的本机解决方案,这可能是可行的方法。
您还必须处理 SNS 消息签名的验证以及订阅确认,这是直接 Lambda 集成不需要的...但这似乎是完成您的任务的一种方式寻找。请注意,您在此处的最佳配置将是 API 网关的区域端点,而不是边缘优化端点。
正如@mark-b 在评论中指出的那样,此功能刚刚在 AWS ReInvent 2017 期间宣布
Set Concurrency Limits on Individual AWS Lambda Functions:
https://aws.amazon.com/about-aws/whats-new/2017/11/set-concurrency-limits-on-individual-aws-lambda-functions/
要设置限制,请导航到控制台中的 Lambda 函数
向下滚动,在最后您可以设置限制。
在 SNS 文档中,我可以看到一些关于交付政策和接收率的信息:
http://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html#delivery-policy-maximum-receive-rate
但是此配置是否仅适用于 HTTP 端点或 Lambda 函数?
是否可以通过 SNS 控制 lambda 并发执行?
如评论中所述,目前这似乎没有实现,但似乎确实有一个相当简单的解决方法:
SNS → API Gateway (an HTTPS endpoint) → Lambda
可以说这是不必要的额外复杂性和费用,但如果您想要一个不需要外部魔法的本机解决方案,这可能是可行的方法。
您还必须处理 SNS 消息签名的验证以及订阅确认,这是直接 Lambda 集成不需要的...但这似乎是完成您的任务的一种方式寻找。请注意,您在此处的最佳配置将是 API 网关的区域端点,而不是边缘优化端点。
正如@mark-b 在评论中指出的那样,此功能刚刚在 AWS ReInvent 2017 期间宣布
Set Concurrency Limits on Individual AWS Lambda Functions: https://aws.amazon.com/about-aws/whats-new/2017/11/set-concurrency-limits-on-individual-aws-lambda-functions/
要设置限制,请导航到控制台中的 Lambda 函数
向下滚动,在最后您可以设置限制。