EventBridge 与 API 网关

EventBridge vs API Gateway

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

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

所以我的问题是:

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

提前致谢。

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

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