【问题标题】:AWS API Gateway Custom Authorizer not runningAWS API Gateway 自定义授权程序未运行
【发布时间】:2017-02-16 16:50:33
【问题描述】:

我创建了一个 Lambda 函数,我已将其配置为我的一个 API 端点的方法请求中的“自定义身份验证”。当我使用 AWS API Gateway 的“测试”函数时,我在日志输出中看不到我的 Lambda 函数的任何输出。

我已经“部署”了 API。

但是 发生了一些事情,因为当我使用配置的自定义域名访问 api 端点时,我得到了

{"message":"Unauthorized"}

但是,如果我从此端点删除“自定义身份验证”并点击相同的端点,它就可以工作!

我已启用 cloudwatch 日志记录,这似乎表明 lambda 函数被调用,但 apiGateway 日志组下也没有任何内容,但是,一定有什么事情发生了,我只能'没看到。

谁能指出我如何调试它的方向?

【问题讨论】:

    标签: aws-lambda aws-api-gateway


    【解决方案1】:
    1. API Gateway 测试调用功能不会调用任何授权方,而是直接调用您的集成。
    2. 您可以使用 API Gateway 控制台上“授权者”选项卡中提供的授权者测试调用独立测试 lambda 授权者。
    3. 您的 lambda 函数必须返回包含主体标识符 (principalId) 和包含策略声明列表的策略文档的响应。

    可以在here找到更详细的文档。

    丽莎。

    【讨论】:

    • 感谢您澄清 Ritisha。 API 网关上的“测试 GUI”没有调用自定义身份验证脚本这一事实确实让我有点困惑!我还发现我的 cloudwatch 日志中的策略角色不正确,它附加到我创建的早期 lambda 函数,当我切换 lambda 函数时,我应该编辑策略。现在我可以在 CloudWatch 日志中看到我的调用 :-)
    • 请务必将“Authorization: Bearer your_token”放在标题中,否则不会调用授权者。
    【解决方案2】:

    您可以通过 aws cli 添加权限,让您的授权者调用 lambda,我做到了并且完美运行!

    aws --profile profile lambda add-permission \
          --statement-id uuid \
          --action lambda:InvokeFunction \
          --function-name "arn:aws:lambda:$region:$accountId:function:functionName" \
          --principal apigateway.amazonaws.com \
          --source-arn "arn:aws:execute-api:$region:$accountId:$apigateway_id/authorizers/$authorizerId"
    

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 2019-06-29
      • 2018-04-17
      • 2018-10-01
      • 2018-03-21
      • 2020-06-17
      相关资源
      最近更新 更多