您可以使用路径参数作为 AWS API Gateway 的身份源吗?

Lau*_*ren 6 amazon-web-services aws-lambda aws-api-gateway

我有一个带有自定义授权者 lambda 的 AWS API Gateway (v2/HTTP) 设置。

网关的路由键类似于:

ANY /{project_id}/{uri+}
Run Code Online (Sandbox Code Playgroud)

我的授权者 lambda 检查给定用户是否有权获得所提供的权限project_id。不幸的是,这意味着我无法缓存结果,因为获得一个项目 ID 授权的用户随后会为其他项目 ID 缓存该授权。

我看到AWS 为网关提供了一个“身份源”参数,它将用作缓存密钥

您可以通过指定authorizerResultTtlInSeconds 为Lambda 授权方启用缓存。当为授权者启用缓存时,API Gateway 使用授权者的身份源作为缓存密钥。如果客户端在配置的 TTL 内的身份源中指定相同的参数,API Gateway 将使用缓存的授权方结果,而不是调用您的 Lambda 函数。

因此,我想使用我的“project_id”路径参数,但对于我来说,是否可以使用支持的身份源来实现这一点并不明显:

显示支持的身份源的屏幕截图

是否可以project_id使用这些表达式来引用路径参数?

Erm*_*ary 1

是否可以使用这些表达式引用project_id路径参数?

是和不是。

虽然您无法专门针对路径参数,但您可以指定路由键,它看起来像以下的确切值project_id指定路由键,在您的示例中,它看起来就像我

在这种情况下,请使用,它是受支持的上下文变量$context.routeKey之一作为您的身份源。

  • 啊,是的,在这种情况下 - 你不能将项目 ID 设置为查询字符串值吗?我必须承认,这看起来像是有效用例服务中缺失的空白 (3认同)