如何在进程触发 lambda 函数之前验证或过滤无服务器和 AWS API 网关中 http 端点路径中的通配符?

How to validate or filter a wildcard in path for http endpoints in Serverless and AWS API gateway before the process triggs the lambda function?

我在无服务器 AWS API 网关 API 中有以下 http 路径 devices/{sn}。通配符 sn 是一个 15 位数字 [A-Z0-9] 模式。

在 API 今天,任何未被识别为有效路径的字符串都将重定向到此端点。例如:devices/test 转到 devices/{sn}devices/bla 转到 devices/{sn} 等等。所有这些字符串将查询数据库并且 return 为空,因为 table 中没有这样的 sn。我可以在 lambda 内部创建一个验证过程以避免不必要的数据库查询。但我想保存 lambda 资源,我想在调用 lambda 之前进行验证。

这是我今天为这个端点所拥有的:

- http:
        path: devices/{sn}
        method: GET
        private: false
        cors: true
        authorizer: ${file(env.yml):${self:provider.stage}.authorizer}
        request:
            parameters:
              paths:
                sn: true

如何在 Serverless.yml 中设置此验证或过滤器?

事实上它应该是AWS/Serverless的一个非常直接的功能。

假设我们有以下场景:myPath/{id}。在这种情况下,id 是一个整数(table 中的 pk)。如果我输入 myPath/blabla 它将触发 lambda。系统会消耗资源。它应该有一种先前的验证 - 仅当 {id} === integer.

时触发端点

您的问题与this issue非常相似 根据 post 和我的经验,不,我认为您不能在 api 网关级别执行验证。