Groovy Micronauts AWS API网关授权器JSON输出问题

Groovy Micronauts AWS API网关授权器JSON输出问题,groovy,aws-api-gateway,micronaut,micronaut-aws,Groovy,Aws Api Gateway,Micronaut,Micronaut Aws,我在Micronauts/Groovy中编写了一个简单的lambda函数,以作为AWS API网关授权器返回允许/拒绝策略。当用作API网关授权器时,无法解析JSON 由于配置错误,执行失败:无法分析策略 在本地测试时,响应在JSON中具有正确的属性大小写。 e、 g: Lambda函数处理程序: AuthResponse sessionAuth(APIGatewayProxyRequestEvent event) { AuthResponse authResponse = new AuthR

我在Micronauts/Groovy中编写了一个简单的lambda函数,以作为AWS API网关授权器返回允许/拒绝策略。当用作API网关授权器时,无法解析JSON

由于配置错误,执行失败:无法分析策略

在本地测试时,响应在JSON中具有正确的属性大小写。 e、 g:

Lambda函数处理程序:

AuthResponse sessionAuth(APIGatewayProxyRequestEvent event) {

AuthResponse authResponse = new AuthResponse()
authResponse.principalId = 'user'
authResponse.policyDocument = new PolicyDocument()
authResponse.policyDocument.version = "2012-10-17"

    authResponse.policyDocument.setStatement([new session.auth.Statement(
            Effect: Statement.Effect.Allow,
            Action:"execute-api:Invoke",
            Resource: "arn:aws:execute-api:eu-west-1:<account>:<ref>/*/GET/"
    )])

return authResponse
AuthResponse sessionAuth(APIGatewayProxyRequestEvent事件){
AuthResponse AuthResponse=新的AuthResponse()
authResponse.principalId='user'
authResponse.policyDocument=新的policyDocument()
authResponse.policyDocument.version=“2012-10-17”
authResponse.policyDocument.setStatement([new session.auth.Statement(
效果:Statement.Effect.Allow,
操作:“执行api:Invoke”,
资源:“arn:aws:executeapi:eu-west-1:://*/GET/”
)])
返回authResponse
}

AuthResponse看起来像:

@CompileStatic
class AuthResponse {
    String principalId
    PolicyDocument policyDocument
}

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
@CompileStatic
class PolicyDocument {
    String Version
    List<Statement> Statement = []
}

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
@CompileStatic
class Statement {
    String Action
    String Effect
    String Resource
}
@CompileStatic
类AuthResponse{
弦长
保单文件保单文件
}
@JsonNaming(PropertyNameingStrategy.UpperCamelCaseStrategy.class)
@编译的
类策略文档{
字符串版本
列表语句=[]
}
@JsonNaming(PropertyNameingStrategy.UpperCamelCaseStrategy.class)
@编译的
类语句{
串动作
弦效应
字符串资源
}

如果您依赖于某种注释或映射程序,那么您似乎无法依靠AWS lambda Java serializer不更改JSON响应。如果希望响应不受影响,则需要为您提供处理程序的原始输出流类型


请参见本AWS文档的结尾

如果您依赖于某种注释或映射程序,那么您无法依靠AWS lambda Java序列化程序不更改JSON响应。如果希望响应不受影响,则需要为您提供处理程序的原始输出流类型


请参阅本AWS文档的结尾

分享您当前的代码。@daggett-我已经编辑了这个问题以包含代码。谢谢。请分享您当前的代码。@daggett-我已经编辑了这个问题以包含代码。谢谢
runtime "io.micronaut:micronaut-function-web"
runtime "io.micronaut:micronaut-http-server-netty"
AuthResponse sessionAuth(APIGatewayProxyRequestEvent event) {

AuthResponse authResponse = new AuthResponse()
authResponse.principalId = 'user'
authResponse.policyDocument = new PolicyDocument()
authResponse.policyDocument.version = "2012-10-17"

    authResponse.policyDocument.setStatement([new session.auth.Statement(
            Effect: Statement.Effect.Allow,
            Action:"execute-api:Invoke",
            Resource: "arn:aws:execute-api:eu-west-1:<account>:<ref>/*/GET/"
    )])

return authResponse
@CompileStatic
class AuthResponse {
    String principalId
    PolicyDocument policyDocument
}

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
@CompileStatic
class PolicyDocument {
    String Version
    List<Statement> Statement = []
}

@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
@CompileStatic
class Statement {
    String Action
    String Effect
    String Resource
}