具有自定义授权者的AWS API Gateway返回AuthorizerConfigurationException

问题描述 投票:0回答:2

我有一个使用自定义授权者的 AWS API 网关,如果请求获得授权,它会触发另一个 lambda 函数。从昨天开始,每当我调用 API 时,都会收到一条错误消息

{ "message": null }
和 500 内部服务器错误。在响应标头中显示
x-amzn-ErrorType →AuthorizerConfigurationException
。我可以在日志中看到授权者被调用并返回有效的策略,并且其他 lambda 函数未触发。我没有(故意)更改授权人。谁能给我提示这里可能出了什么问题吗?我已阅读this问题,但错误是返回的保单格式错误,而我没有更改我的授权人并且之前它有效。

amazon-web-services aws-lambda aws-api-gateway aws-serverless
2个回答
0
投票

保单文档的上下文部分只能包含字符串、布尔值或数字值。数组和对象是非法的。

文档指出:

返回的值都是字符串化的。请注意,您无法将 JSON 对象或数组设置为上下文映射中任何键的有效值。

来源: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-lambda-authorizer-output.html


0
投票

您需要在 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/*"
        }
      }
    }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.