如何配置我的无服务器YML以使用我的API网关授权器?

时间:2019-07-10 12:48:54

标签: aws-lambda aws-api-gateway serverless-framework

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

我已经用一个经过验证的用户,一个API网关授权者和一个lambda函数来创建我的用户池,以登录并获取令牌ID。

当我使用lambda函数获取令牌ID并在AWS控制台中对其进行测试时,授权者返回200,因此我认为它正在运行,但是当我尝试将令牌发送至lambda函数时,它将返回“ 401 Unauthorized”

我的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 Console,我的lambda函数和API Gateway触发器的详细信息如何:

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,但它似乎是最新版本。

1 个答案:

答案 0 :(得分:1)

我几次读过this页,并且意识到自己使用的方式不正确,所以我将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

我还将我的授权者来源更改为授权。