具有路径参数的 AWS API Gateway Lambda 授权方

问题描述 投票:0回答:1

我使用 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值的请求授权的见解或解决方案将不胜感激。

amazon-web-services aws-api-gateway aws-cdk aws-cdk-typescript aws-authorizer
1个回答
0
投票
在您的情况下,

$context.path
始终为
/api/v2/automations/{automationId}/recipient
- 它不会对路径参数的实际值执行替换。

您正在寻找

$context.routeKey
参数。

来自文档

要缓存每个路由的响应,请将 $context.routeKey 添加到授权者的身份源。

© www.soinside.com 2019 - 2024. All rights reserved.