AWS API Gateway默认响应和Trigger AWS Lambda

时间:2016-05-18 10:47:47

标签: amazon-web-services aws-lambda aws-api-gateway serverless-framework

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

  • 事件从我的应用程序发布到API端点
    • 我希望API能够回复自定义回复(说{'罚款'}) (承认已收到请求)
  • 发送响应后,将事件有效负载移交给AWS Lambda函数

根据文档,我明白,  a)我可以将事件发布到API端点  b)在GET / POST上触发AWS Lambda函数     - 从AWS Lambda函数回复到API请求

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

请分享有关如何实现相同目标的建议。

3 个答案:

答案 0 :(得分:0)

如果您想要API的快速响应而不必等待数据处理,您可以:

  • 将事件发布到API网关端点
  • 触发AWS Lambda函数 A
  • 使用Lambda函数中的AWS SDK A
  • 异步调用Lambda函数 B
  • 致电context.succeed()context.done()或Lambda函数 A 中的回调函数,以便它回复API网关
  • Lambda函数 B 可以在API网关已收到响应时处理数据

答案 1 :(得分:0)

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

  1. 设置配置为send requests to Amazon Kinesis的API。此API可以确认该请求。
  2. 将AWS Lambda设置为consume your Kinesis stream
  3. 此设置对于高工作负载API具有一些优势,因为Kinesis流中的提取可以进行批处理,并且不需要对API网关限制和Lambda限制进行1对1缩放。

    更新

    回答有关可扩展性的问题:

    <强>室壁运动

    Kinesis通过向流添加所谓的“分片”进行扩展。每个分片根据分区键处理一部分流量。每个分片最多可扩展到1000 rps或1 MBps(see limits)。即使使用较低的默认25分片,使用均匀分布的分区密钥也可支持高达25,000 rps或25 MBps。

    API网关

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

答案 2 :(得分:0)

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

  1. 客户端对API网关的请求 - &gt;调用Lambda函数A
  2. Lambda A验证有效负载,然后发布到SNS主题X
  3. Lambda A返回{fine}成功消息 - &gt; API网关 - &gt;客户端
  4. SNS主题X触发Lambda函数B
  5. Lambda函数B实现给定逻辑