如何在每个无服务器功能之前 运行 公共功能,如快速中间件?

How to run a common function before every serverless function like an express middleware?

我需要 运行 在 运行 启用每个无服务器功能之前的功能来验证用户并清理数据。然后将该数据传递给实际函数,如 ExpressJS 中间件。我们可以用无服务器做类似的事情吗?

我看不到使用 lambda 函数实现 "express like" 中间件的方法(一种非常干净的方法),这是一个不同的概念。

我想这是一个更好的方法:

  1. 创建您的自定义 API 网关授权器(仅当您需要时);
  2. 在 API 网关级别授权(每个用户的 IAM 策略)
  3. 在每个单独的 Lambda 中清理您的数据

更多:http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

听起来像标准的 VETO 模式(验证、丰富、转换、操作)

正如 Tom Melo 所提到的,如果您的设置有一个网关,您可以将自定义授权方连接到 API 网关。如果你想要一个单独的地方来清理和转换请求,你可以在 API 网关中使用 {proxy+} 模式来更改消息,然后根据路径参数等通过 SNS 路由到实际操作。

如果您没有 API 网关,那么您可以使用 SNS 将所有内容链接在一起。