Aws lambda 无服务器框架忽略";“授权人”;lambda代理设置中的块
我们有一个Aws lambda 无服务器框架忽略";“授权人”;lambda代理设置中的块,aws-lambda,aws-api-gateway,amazon-cognito,serverless-framework,serverless,Aws Lambda,Aws Api Gateway,Amazon Cognito,Serverless Framework,Serverless,我们有一个serverless.yml,它在APIGateway中创建一个lambda代理 我已经看到了几种将cognito用户池授权器附加到lambda代理的方法,但它们都不起作用。在每种情况下,结果都是在Proxy或Proxy+上都没有设置身份验证。(如中所示,在API网关控制台中,“Auth”始终读取“NONE”。) 例如: events: - http: ANY / integration: lambda-proxy authorize
serverless.yml
,它在APIGateway中创建一个lambda代理
我已经看到了几种将cognito用户池授权器附加到lambda代理的方法,但它们都不起作用。在每种情况下,结果都是在Proxy或Proxy+上都没有设置身份验证。(如中所示,在API网关控制台中,“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>"
事件:
-http:有吗/
集成:lambda代理
授权人:
类型:COGNITO_用户_池
授权人:
参考:CognitoUserPoolAuthorizer
-http:ANY{proxy+}
集成:lambda代理
授权人:
arn:${self:custom.userPools.arnBase}/${self:custom.userPools.ids.${self:custom.stage}
#上述结果的格式为:“arn:aws:cognito idp:us-west-2:,但两者都没有关于lambda代理的文档记录,因此我不确定是否存在未记录的差异
在第一种方法(对资源使用Ref
)中,正确地创建了资源,但没有将身份验证附加到端点。(我没有在这里包括资源块,因为它按预期工作。)第二种方法具有相同的效果(但没有创建授权者)
我们的无服务器框架版本为1.52,符合中所述的要求
我也尝试过将集成
设置为lambda
,或者完全没有该行。结果在所有情况下都是一样的
我通过控制台手动选择授权人来实现这一点,但我们正试图消除这些手动步骤
这里缺少了什么?快速浏览一下,您的serverless.yml
文件的缩进可能已关闭。您可以使用http
数组项下的选项卡重试吗
此外,您还需要删除方法和路径的缩写,而是分别使用它们。下面的代码段应该可以使用:
events:
- http:
method: ANY
path: /
integration: lambda-proxy
authorizer:
type: COGNITO_USER_POOLS
authorizerId:
Ref: CognitoUserPoolAuthorizer
- http:
method: ANY
path: /{proxy+}
integration: lambda-proxy
authorizer:
arn: ${self:custom.userPools.arnBase}/${self:custom.userPools.ids.${self:custom.stage}}
当我试着这样做的时候,我得到了一个很糟糕的缩进错误。不过,这个想法很好。我希望这就是问题所在。我明白了。下面是另一个我认为正确的缩进的例子:它有效吗?好的,这是正确的,但不仅仅是因为缩进的原因!结果是,不仅它需要更多的缩进,而且我们可以d不使用速记-http:ANY/
-进一步缩进并更改为多行方法:ANY
和路径:/{proxy+}
做到了。如果你修改你的答案以包含该建议,我将接受:)是的,我在发布评论并修改后立即注意到了它。谢谢!很高兴我能提供帮助。