0

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

先感谢您。

4

1 回答 1

4
  1. API Gateway是一项允许您创建 RESTful API 的服务。我假设这正是您所需要的,如果您想部署一些您提到的 API。EventBridge是一个无服务器事件总线,您可以在其中发布事件并配置您的 lambda 以使用这些事件。这就是您用于解耦通信的方法。例如,如果您的 API Gateway 的 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 可以在未来使用某种针对查询进行优化的不同类型的数据库。这些只是您的应用程序增长时需要考虑的一些事项。

于 2020-12-11T18:55:17.490 回答