- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
CouchDB 提供了一个 _changes
端点,可以选择使用长期存在的 HTTP 连接来提供更改事件流。
生成更改事件时,我希望触发 AWS Lambda 函数。 CouchDB的continuous changes feed似乎合适,但是否可以将其用作 Lambda 的事件源?
通常,您可以使用 API Gateway 来调用 Lambda,但通过 HTTP 调用网关端点,而不是作为 HTTP 使用者(CouchDB 似乎没有提供类似 webhook 的机制)。
这可以通过使用 follow 来解决监听更改并手动调用 Lambda,但这可以单独使用 AWS 解决吗?
最佳答案
出于本答案的目的,我将假设“单独使用 AWS”不包括其他 AWS 计算原语,如 EC2 和 Fargate。可用于解决连续流问题。
简短的回答是否定的,目前仅靠 Lambda 无法维持生命周期超过 300 秒的连接。尽管如果您愿意减轻持续连接的限制,还有其他方法可以解决此问题。
第一个选项是创建一个 Lambda 函数,用于提取当前更改源并将序列号存储在 DynamoDB 表中。您可以使用 periodic CloudWatch Event每次使用 since
调用 CouchDB 端点时触发此 Lambda 函数参数使用存储在 DynamoDB 中的 ID。
第二种选择是递归调用您的 Lambda 函数。连接到 continuous
事件提要通过 since
参数并保持提要打开,直到您的 Lambda 函数即将超时。在超时之前获取最后一个事件的序列 ID,并使用该序列 ID 作为输入参数异步调用您的 Lambda 函数,从而完成您的第一个函数。调用之间可能会有一点延迟,但传递序列 ID 将确保您不会丢失任何事件。
第三个选项是使用 Step Functions 对第二个选项的流量进行建模。它们基于 Lambda,但提供了围绕您的 Lambda 调用的状态机。
另一个不需要在功能之间进行太多协调但需要权衡一些额外设置的选项是使用 ECS 和 Fargate . Fargate 管理 ECS 集群的所有底层计算基础设施。您将需要提供容器镜像和 ECS 配置(我建议使用 CloudFormation),但您将减轻超时限制。
关于amazon-web-services - 如何仅使用 AWS 触发 AWS Lambda 以响应 CouchDB 更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41673912/
我是一名优秀的程序员,十分优秀!