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+}
做到了。如果你修改你的答案以包含该建议,我将接受:)是的,我在发布评论并修改后立即注意到了它。谢谢!很高兴我能提供帮助。