对于 Kinesis 流,我使用 AWS API Gateway 创建了一个代理 API。我使用 python Lambda 为代理添加了一个自定义授权方。在发布 lambda 函数并部署 API 后,我能够使用网关测试功能成功测试 API。我可以在 cloudwatch 中看到日志,其中包含来自自定义 auth lambda 函数的详细打印。成功验证后,API Gateway 将记录推送到我的 Kinesis 流
但是当我从 Chrome Postman 客户端调用相同的 API 时,我得到500 Internal Server Error并且响应标头包括X-Cache → 来自云端的错误,x-amzn-ErrorType → AuthorizerConfigurationException
Lambda 身份验证函数返回允许对我的 API 执行请求的策略。返回的政策文件是:
{ “政策文件”:{ “版本”:“2012-10-17”, “陈述”: [ { “动作”:“执行 API:调用”, “资源”:[ “arn:aws:execute-api:us-east-1:1234567:myapiId/staging/POST/*” ], “效果”:“允许” } ] }, “principalId”:“Foo” }
为什么 Chrome 或 curl 的请求失败,但 API Gateway 的相同 API 测试工作正常?