首页 文章

AWS API Gateway默认响应和Trigger AWS Lambda

提问于
浏览
2

我一直在尝试使用AWS API Gateway和AWS Lambda来试用无服务器架构 . 一直在浏览博客和AWS文档 . 已经尝试了样本GET / POST . 但是,我有以下要求w.r.t跟踪我的自定义应用程序中的用户事件

  • 事件从我的应用程序发布到API endpoints

  • 我希望API使用自定义响应回复(Say {'fine'})(确认已收到请求)

  • 发送响应后,将事件有效负载移交给AWS Lambda函数

根据文档,我了解到,a)我可以将事件发布到API endpoints b)在GET / POST上触发AWS Lambda函数 - 从AWS Lambda函数响应API请求

我想更改以上内容并将其修改为a)将事件发布到API endpoints a.0)回复确认收到请求[Say {'fine'}] b)触发AWS Lambda函数以处理事件有效负载

请分享有关如何实现相同的建议 .

3 回答

  • 0

    许多客户使用的另一个异步模型:

    此设置对于高工作负载API具有一些优势,因为来自Kinesis流的提取可以进行批处理,并且不需要对API网关限制和Lambda限制进行1对1缩放 .

    Update

    回答有关可伸缩性的问题:

    Kinesis

    Kinesis通过将其称为"shards"的内容添加到流中进行扩展 . 每个分片根据分区键处理一部分流量 . 每个分片可扩展至1000 rps或1MBps(see limits) . 即使使用较低的默认25个分片,使用均匀分布的分区键也可以支持高达25,000 rps或25 MBps .

    API Gateway

    API网关的默认帐户级别限制为500 rps,但可以通过请求限制增加轻松扩展 . 我们的 生产环境 客户使用的服务超出了您当前建议的规模 .

  • 0

    如果您希望从API快速响应而不必等待数据处理,您可以:

    • 将事件发布到API网关 endpoints

    • 触发AWS Lambda函数 A

    • 使用Lambda函数中的AWS SDK异步调用Lambda函数 B A

    • 调用 context.succeed()context.done() 或Lambda函数 A 中的回调函数,以便它响应API网关

    • Lambda函数 B 可以在API网关已收到响应时处理数据

  • 0

    您应首先运行一些测试,以了解您的lambda函数完成所有逻辑后您获得的实际响应时间类型 . 如果时间高于您认为对于您的用例可接受的时间,则此处是另一个异步解决方案utilizing an SNS Topic以触发secondary Lambda function .

    • 客户端对API网关的请求 - >调用Lambda函数A.

    • Lambda A验证有效负载,然后发布到SNS主题X.

    • Lambda A返回 {fine} 成功消息 - > API网关 - >客户端

    • SNS主题X触发Lambda函数B.

    • Lambda函数B实现给定的逻辑

相关问题