【问题标题】:EventBridge vs API GatewayEventBridge 与 API 网关
【发布时间】:2020-11-19 01:00:46
【问题描述】:

最近几天我正在尝试学习如何使用 AWS,因为我想部署一些 API。

到目前为止,我正在学习如何将 API GatewayLambda 函数 一起使用,这似乎是一个不错的工作流程。但是,因为我使用 flask-restplus 编写我的 API,我尝试了 Zappa 框架,它使用 EventBridge (CloudWatch Events) 作为触发我创建的每个 Lambda 函数。

所以我的问题是:

  1. EventBridge 和 API Gateway 有什么区别,我应该什么时候使用它们?
  2. 在使用 API Gateway 时,我意识到最佳实践是为每个 API 创建不同的 Lambda 函数,然后将其连接到网关。那么,将整个 python 文件作为 Lambda 函数上传是个好主意吗? (所有 API 路由都写在那里)还是我应该为每个 API 做一个过程?

提前谢谢你。

【问题讨论】:

    标签: aws-lambda aws-api-gateway flask-restplus zappa aws-event-bridge


    【解决方案1】:
    1. API Gateway 是一项允许您创建 RESTful API 的服务。我假设这正是您所需要的,如果您想部署一些您提到的 API。 EventBridge 是一个无服务器事件总线,您可以在其中发布事件并配置您的 lambda 以使用这些事件。这就是您用于解耦通信的方法。例如。如果对您的 API 网关的 POST 为您的应用创建了一个新用户 那么您的 Lambda 可以将事件“USER_CREATED”发送到 EventBridge 事件总线。然后另一个 Lambda 可以订阅事件 “USER_CREATED”并发送欢迎电子邮件。 CloudWatch 事件 是 只是发布到事件总线的基于计时器的 EventBridge 事件。在那里面 例如,您可以创建一个规则,通知您的 Lambda 早上运行一些后台任务。发送日常营销 给您的客户的电子邮件可能就是这样一种用例。

    2. 我认为没有单一的最佳实践。从一个 Lambda 服务多个 API 端点开始可能更简单。您还可以考虑您的 Lambda 需要什么样的权限和资源/数据库。一个例子是将 Lambda 划分为命令并查询 Lambda。这样,POST、PATCH、PUT 和 DELETE 可以调用一个对您的数据库具有写入权限的 Lambda。然后 GET 端点由另一个仅对您的数据库具有读取权限的 Lambda 处理。这个读取的 lambda 可以在未来使用某种针对查询进行优化的不同类型的数据库。这些只是您的应用程序增长时需要考虑的一些事项。

    【讨论】:

    • 非常感谢您的回复。您帮助理解了 API Gateway 和 EventBridge 之间的区别。至于第二个问题,我发现除了权限之外,我还必须考虑另一个参数,那就是尽量减少“冷启动”。因此,我将采用一种更像单体模型但形式不同的解决方案。
    • 是的,这是一个很好的观点。完全忘记了冷启动。
    猜你喜欢
    • 1970-01-01
    • 2018-05-26
    • 2019-01-23
    • 1970-01-01
    • 2014-10-15
    • 2018-03-11
    • 2019-11-03
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多