Configurar Objectmapper utilizado por Java AWS Lambda

Stephen Gibson:

Estoy tratando de desarrollar una función de AWS Lambda que se desencadena por eventos de SQS.

Estoy utilizando el resorte de nube de función adaptador-AWS (versión 1.0.0.RELEASE) y en concreto un SpringBootRequestHandler .

Sin embargo, el ObjectMapper que se utiliza es sensible a mayúsculas y por lo tanto no permite convertir con éxito el JSON procedentes de SQS.

SQS publica el siguiente JSON y es el Records campo en particular que estoy teniendo el problema.

    {
  "Records": [
    {
      "body": "Hello from SQS!",
      "receiptHandle": "MessageReceiptHandle",
      "md5OfBody": "7b270e59b47ff90a553787216d55d91d",
      "eventSourceARN": "arn:aws:sqs:eu-west-1:123456789012:MyQueue",
      "eventSource": "aws:sqs",
      "awsRegion": "eu-west-1",
      "messageId": "19dd0b57-b21e-4ac1-bd88-01bbb068cb78",
      "attributes": {
        "ApproximateFirstReceiveTimestamp": "1523232000001",
        "SenderId": "123456789012",
        "ApproximateReceiveCount": "1",
        "SentTimestamp": "1523232000000"
      },
      "messageAttributes": {}
    }
  ]
}

He todas las sugerencias de esta pregunta, pero fue en vano. Configuración ObjectMapper en la primavera

En mi POJO, También he añadido el siguiente anotación, pero no está funcionando bien, mientras que lo haría fuera de Lambda.

@JsonProperty("Records")
private List<SqsRecord> Records;

Cualquier ayuda sería muy apreciada.

Mi manejador de Lambda se define como:

public class SqsEventHandler extends SpringBootRequestHandler<SqsEvent, String> {}

El POJO define como:

public class SqsEvent {

@JsonProperty("Records")
private List<SqsRecord> records;

@Data
public class SqsRecord {
    private String body;
    private String receiptHandle;
    private String md5OfBody;
    private String eventSourceARN;
    private String eventSource;
    private String awsRegion;
    private String messageId;
}

}

Espero que el JSON del mensaje de muestra para poder ser leído en el ObjectMapper, pero el campo "registros" es nulo.

Stephen Gibson:

Tengo este problema resuelto de una manera más sencilla.

Referenciación https://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-stream.html y en concreto

Si el enfoque de serialización de Lambda no satisface sus necesidades, puede utilizar la implementación de flujo de bytes

Ahora estoy usando la SpringBootStreamHandler directamente y he creado una instancia ObjectMapper con mis opciones de configuración requeridos en mi clase de configuración de la primavera como:

@Bean
public ObjectMapper objectMapper() {
    final ObjectMapper mapper = new ObjectMapper();
    mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    return mapper;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190168&siteId=1
Recomendado
Clasificación