我使用 AWS API Gateway 和 Lambda 函数作为请求授权者,并进行以下设置:
const requestAuthorizer = new RequestAuthorizer(this, "RequestAuthorizer", {
handler: requestAuthorizerLambda,
resultsCacheTtl: Duration.seconds(300),
identitySources: [
IdentitySource.header("authorization"),
IdentitySource.context("path"),
],
});
我们的API端点是:
POST /api/v2/automations/{automationId}/recipient
问题
我检查授权者 Lambda 函数,路径参数中的
automationId
是否对应于实时状态下的自动化。如果自动化未处于实时状态,则应拒绝该请求。但是,我遇到了一个问题:
当我拒绝对不处于活动状态的自动化的请求时,对不同自动化 ID 值的后续或并行有效请求也会被拒绝,即使它们应该被接受。即使我将
resultsCacheTtl
设置为 0 以禁用缓存,也会发生这种情况。
如何正确配置 API Gateway Lambda Authorizer 来处理
automationId
等路径参数?任何正确处理具有不同automationId值的请求授权的见解或解决方案将不胜感激。
$context.path
始终为/api/v2/automations/{automationId}/recipient
- 它不会对路径参数的实际值执行替换。
$context.routeKey
参数。
来自文档:
要缓存每个路由的响应,请将 $context.routeKey 添加到授权者的身份源。