我有一个使用自定义授权者的 AWS API 网关,如果请求获得授权,它会触发另一个 lambda 函数。从昨天开始,每当我调用 API 时,都会收到一条错误消息
{ "message": null }
和 500 内部服务器错误。在响应标头中显示 x-amzn-ErrorType →AuthorizerConfigurationException
。我可以在日志中看到授权者被调用并返回有效的策略,并且其他 lambda 函数未触发。我没有(故意)更改授权人。谁能给我提示这里可能出了什么问题吗?我已阅读this问题,但错误是返回的保单格式错误,而我没有更改我的授权人并且之前它有效。
保单文档的上下文部分只能包含字符串、布尔值或数字值。数组和对象是非法的。
文档指出:
返回的值都是字符串化的。请注意,您无法将 JSON 对象或数组设置为上下文映射中任何键的有效值。
您需要在 AWS Lambda 中配置基于资源的策略语句,以允许 API Gateway 授权方调用您的函数。它位于配置 -> 权限 -> 基于资源的策略声明中。
然后,添加如下内容:
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "allow-api_gateway-authorizer-invoke",
"Effect": "Allow",
"Principal": {
"Service": "apigateway.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "<LAMBDA AUTHORIZER FUNCTION ARN HERE>",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:execute-api:<API GATEWAY REGION>:<ACCOUNT_NUMBER>:*/authorizers/*"
}
}
}
]
}