2

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

  • 事件从我的应用程序发布到 API 端点
    • 我希望 API 以自定义响应(例如 {'fine'})进行响应(确认已收到请求)
  • 发送响应后,将事件负载移交给 AWS Lambda 函数

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

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

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

4

3 回答 3

0

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

  • 将事件发布到 API Gateway 端点
  • 触发 AWS Lambda 函数A
  • 使用 Lambda 函数A中的 AWS 开发工具包异步调用 Lambda 函数B
  • 调用context.succeed()context.done()或 Lambda 函数A中的回调函数,使其响应 API Gateway
  • Lambda 函数B可以在 API 网关已收到响应时处理数据
于 2016-05-18T14:09:16.807 回答
0

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

  1. 设置一个配置为向 Amazon Kinesis 发送请求的 API 。此 API 可以确认请求。
  2. 设置 AWS Lambda 以使用您的 Kinesis 流

此设置对于高工作负载 API 有一些优势,因为可以对 Kinesis 流中的提取进行批处理,并且不需要对 API Gateway 限制和 Lambda 限制进行一对一的扩展。

更新

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

运动

Kinesis 通过将所谓的“分片”添加到流中来进行扩展。每个分片根据分区键处理一部分流量。每个分片可扩展到 1000 rps 或 1MBps(请参阅限制)。即使使用较低的默认 25 个分片,这也将支持高达 25,000 rps 或 25MBps 的均匀分布的分区键。

API 网关

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

于 2016-05-18T18:34:06.320 回答
0

您应该首先运行一些测试,以查看让您的 lambda 函数完成所有逻辑所获得的实际响应时间类型。如果时间超过您认为您的用例可以接受的时间,这里是另一个异步解决方案,它利用 SNS 主题触发辅助 Lambda 函数

  1. 客户端对 API 网关的请求 -> 调用 Lambda 函数 A
  2. Lambda A 验证有效载荷,然后发布到 SNS 主题 X
  3. Lambda A 返回{fine}成功消息 -> API Gateway -> 客户端
  4. SNS 主题 X 触发 Lambda 函数 B
  5. Lambda 函数 B 实现给定逻辑
于 2016-05-21T16:05:59.967 回答