我正在按照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,但它似乎是最新版本。
答案 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
我还将我的授权者来源更改为授权。