【发布时间】:2020-02-02 02:14:54
【问题描述】:
我们有一个serverless.yml 在 APIGateway 中创建一个 lambda 代理。
我已经看到了几种将 cognito 用户池授权器附加到 lambda 代理的方法,但它们都不起作用。在任何情况下,结果都是没有在 Proxy 或 Proxy+ 上设置身份验证。 (如在 API Gateway 控制台中,“Auth”始终读取“NONE”。)
例子:
events:
- http: ANY /
integration: lambda-proxy
authorizer:
type: COGNITO_USER_POOLS
authorizerId:
Ref: CognitoUserPoolAuthorizer
- http: ANY {proxy+}
integration: lambda-proxy
authorizer:
arn: ${self:custom.userPools.arnBase}/${self:custom.userPools.ids.${self:custom.stage}}
# The above results in the format: "arn:aws:cognito-idp:us-west-2:<account_id>:userpool/us-west-2_<user_pool_id>"
您可以在上面看到我正在尝试两种不同的方法来完成相同的任务。 (让我们试着把科学扔在墙上,看看有什么能坚持下去。) 这两种方法都记录在不同的地方by the serverless framework,但都没有关于 lambda 代理的记录,所以我不确定是否存在未记录的差异。
在第一种方法中(在资源上使用Ref),资源被正确创建,但没有附加身份验证到端点。 (我没有在此处包含资源块,因为它按预期工作。)第二种方法具有相同的效果(但没有创建授权者)。
我们的 serverless 框架版本是 1.52,满足this other SO post 中的要求。
我也尝试将integration 设置为lambda,或者完全不使用该行。结果在所有情况下都是一样的。
我已经通过控制台手动选择授权人来实现此功能,但我们正试图消除这些手动步骤。
我们在这里缺少什么?
【问题讨论】:
标签: aws-lambda aws-api-gateway amazon-cognito serverless-framework serverless