我试图通过java SDK实现自定义授权器lambda函数 . 有人可以告诉我lambda函数预期的JSON响应的确切格式 . 另外,我应该以哪种格式返回输出(JSON对象或策略对象) .
{
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:us-east-1:1234567:myapiId/staging/POST/*"
],
"Effect": "Allow"
}
]
},
"principalId": "User123"
}
这是我在 JSONObject
格式的输出中提供的格式但是收到错误
Mon Apr 10 09:42:35 UTC 2017:转换后的 endpoints 请求体:{“type”:“TOKEN”,“authorizationToken”:“ABC123”,“methodArn”:“arn:aws:execute-api:ap- southeast-1:007183653813:ohlqxu9p57 / null / GET /“}星期一4月10日09:42:36 UTC 2017:由于配置错误导致执行失败:授权程序功能因响应正文失败:{”errorMessage“:”JSON期间发生错误响应序列化“,”errorType“:”java.lang.RuntimeException“,”stackTrace“:[],”cause“:{”errorMessage“:”com.fasterxml.jackson.databind.JsonMappingException:JsonObject(通过引用链: com.google.gson.JsonObject [\“asString \”])“,”errorType“:”java.io.UncheckedIOException“,”stackTrace“:[],”cause“:{”errorMessage“:”JsonObject(通过引用) chain:com.google.gson.JsonObject [\“asString \”])“,”errorType“:”com.fasterxml.jackson.databind.JsonMappingException“,”stackTrace“:[”com.fasterxml.jackson.databind.JsonMappingException .wrapWithPath(JsonMappingException.java:210) “” com.fasterxml.jackson.databind.JsonMa ppingException.wrapWithPath(JsonMappingException.java:177) “ ”com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:199)“,” com.fasterxml.jackson.databind.ser.std . BeanSerializerBase.serializeFields(BeanSerializerBase.java:683)“,”com.f [TRUNCATED] Mon Apr 10 09:42:36 UTC 2017:AuthorizerConfigurationException
任何帮助都会很棒 . 提前致谢
3 回答
AWS开发人员指南提供了lambda函数输入/输出的良好示例:http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html
您面临的问题是与Lambda框架相关 .
本质上,Lambda将调用处理函数并传递序列化的JSON .
}
当您使用自定义授权程序时,API网关将以下JSON传递给您的lambda函数:
{“type”:“TOKEN”,“authorizationToken”:“”,“methodArn”:“arn:aws:execute-api ::: ///”}
你应该有一个自定义DO AuthorizationRequestDO
这是一个POJO ::
public class AuthorizationRequestDO {
}
您的
Resource
属性应该是单个string
值 .