在过去的几天里,我正在努力学习如何使用AWS,因为我想部署一些API。
到目前为止,我正在学习如何使用API网关和Lambda函数,这似乎是一个很好的工作流程。但是,因为我使用flask restplus编写API,所以我尝试了Zappa框架,该框架使用EventBridge(CloudWatch Events(作为我创建的每个Lambda函数的触发器。
所以我的问题是:
- EventBridge和API网关之间的区别是什么?我什么时候应该使用它们
- 在使用API网关时,我意识到最佳实践是为每个API创建不同的Lambda函数,然后N将其连接到网关。那么,将整个python文件作为Lambda函数上传是个好主意吗?(所有API路线都写在那里(还是我应该为每个API做一个程序
提前谢谢。
-
neneneba API网关是一项允许您创建RESTful API的服务。我认为,如果您喜欢部署您提到的一些API,那么这正是您所需要的EventBridge是一个无服务器事件总线,您可以在其中发布事件并配置Lambda以使用这些事件。这就是用于去耦通信的方法。例如,如果API网关的POST为您的应用程序创建了新用户那么你的Lambda可以发送一个事件";USER_CREATED";进入EventBridge事件总线。然后其他Lambda可以订阅活动"USER_CREATED";并发送欢迎电子邮件CloudWatch事件只是发布到事件总线的基于计时器的EventBridge事件。因为在这种情况下,你可以创建一个规则,通知你的Lambdas早上运行一些后台任务。发送每日营销给客户发电子邮件可能就是这样一个用例。
-
我不认为有什么好办法。从一个Lambda开始为多个API端点提供服务可能更简单。您还可以考虑您的Lambdas需要什么样的权限和资源/数据库。一个例子是将Lambdas划分为命令和查询Lambdas。这样,POST、PATCH、PUT和DELETE可以调用一个对数据库具有写入权限的Lambda。然后,GET端点由另一个只对数据库具有读取权限的Lambda处理。这个读取lambda将来可能会使用一些针对查询进行优化的不同类型的数据库。这些只是应用程序增长时需要考虑的一些事项。