EventBridge 与 API 网关

jim*_*mni 0 zappa aws-lambda aws-api-gateway flask-restplus aws-event-bridge

最近几天我正在尝试学习如何使用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 执行一个过程?

先感谢您。

Jan*_*ola 6

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

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