如何将我的无服务器 YML 配置为使用我的 API 网关授权方



我正在按照本教程使用 Cognito 授权通过 API 网关访问我的 lambda 函数。

我已经使用经过验证的用户、API 网关授权方和 lambda 函数创建了我的用户池,用于登录并获取令牌 ID。

当我使用 lambda 函数

获取令牌 ID 并在 AWS 控制台中对其进行测试时,授权方返回 200,所以我认为它正在工作,但是当我尝试将令牌发送到我的 lambda 函数时,它返回"401 未经授权">

我的 YML 配置:

teste:
  handler: handler.teste
  memorySize: 128
  events:
    - http:
        path: teste
        method: get
        authorizer:
          name: api-authorizer
          arn: arn:aws:cognito-idp:XXXXXXXXX:XXXXXXXXXX:userpool/XXXXXXX_XXXXXXX
          type: token

编辑

我查看了 AWS 控制台,我的 lambda 函数和 API 网关触发器具有以下详细信息:

Autorização: COGNITO_USER_POOLS
Caminho do recurso: /teste
Endpoint de API: https://XXXXXXXXX.execute-api.XXXXXXXXX.amazonaws.com/dev/teste
Estágio: dev
Método: GET

编辑 2

我还发现我的无服务器版本是 1.47,看起来它是最新的,尽管我在 Stack 上阅读了一些问题,他们说无服务器在 1.5 中

我读了几次这个页面,我意识到我没有使用正确的方法,所以我将我的 YML 代码更改为:

  functions:
teste:
  handler: handler.teste
  memorySize: 128
  events:
    - http:
        path: teste
        method: get
        type: COGNITO_USER_POOLS
        authorizer:
          arn: arn:aws:cognito-idp:XXXXXXXX:XXXXXXXXX:userpool/XXXXXXXX_XXXXXXXXX
          authorizerId:
            Ref: api-authorizer

我还将我的授权方源更改为授权。

最新更新