Skip to content

Commit 3f25eff

Browse files
committed
Disable FAIL_ON_UNKNOWN_PROPERTIES in SqsMessageParser ObjectMapper
Signed-off-by: Divyansh Bokadia <dbokadia@amazon.com>
1 parent 5aa6928 commit 3f25eff

4 files changed

Lines changed: 12 additions & 10 deletions

File tree

data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/parser/S3EventNotificationParser.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,15 @@ public ParsedMessage parseMessage(final Message message, final ObjectMapper obje
2222
final S3EventNotification s3EventNotification = objectMapper.treeToValue(eventNode, S3EventNotification.class);
2323
if (s3EventNotification != null && s3EventNotification.getRecords() != null) {
2424
return new ParsedMessage(message, s3EventNotification.getRecords());
25+
} else if (message.body().contains("s3:TestEvent") && message.body().contains("Amazon S3")) {
26+
LOG.info("Received s3:TestEvent message. Deleting from SQS queue.");
27+
return new ParsedMessage(message, false);
2528
} else {
2629
LOG.debug("SQS message with ID:{} does not have any S3 event notification records.", message.messageId());
2730
return new ParsedMessage(message, true);
2831
}
2932
} catch (final JsonProcessingException e) {
30-
if (message.body().contains("s3:TestEvent") && message.body().contains("Amazon S3")) {
31-
LOG.info("Received s3:TestEvent message. Deleting from SQS queue.");
32-
return new ParsedMessage(message, false);
33-
} else {
34-
LOG.error("SQS message with message ID:{} has invalid body which cannot be parsed into S3EventNotification. {}.", message.messageId(), e.getMessage());
35-
}
33+
LOG.error("SQS message with message ID:{} has invalid body which cannot be parsed into S3EventNotification. {}.", message.messageId(), e.getMessage());
3634
}
3735
return new ParsedMessage(message, true);
3836
}

data-prepper-plugins/s3-source/src/main/java/org/opensearch/dataprepper/plugins/source/s3/parser/SqsMessageParser.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package org.opensearch.dataprepper.plugins.source.s3.parser;
77

8+
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
89
import com.fasterxml.jackson.databind.ObjectMapper;
910
import org.opensearch.dataprepper.plugins.source.s3.S3SourceConfig;
1011
import software.amazon.awssdk.services.sqs.model.Message;
@@ -13,7 +14,8 @@
1314
import java.util.stream.Collectors;
1415

1516
public class SqsMessageParser {
16-
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
17+
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
18+
.disable(FAIL_ON_UNKNOWN_PROPERTIES);
1719
private final S3SourceConfig s3SourceConfig;
1820
private final S3NotificationParser s3NotificationParser;
1921

data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/parser/S3EventBridgeNotificationParserTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package org.opensearch.dataprepper.plugins.source.s3.parser;
77

8+
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
89
import com.fasterxml.jackson.databind.ObjectMapper;
910
import org.junit.jupiter.api.BeforeEach;
1011
import org.junit.jupiter.api.Test;
@@ -18,7 +19,7 @@
1819
import static org.mockito.Mockito.when;
1920

2021
class S3EventBridgeNotificationParserTest {
21-
private final ObjectMapper objectMapper = new ObjectMapper();
22+
private final ObjectMapper objectMapper = new ObjectMapper().disable(FAIL_ON_UNKNOWN_PROPERTIES);
2223
static final String EVENTBRIDGE_MESSAGE = "{\"version\":\"0\",\"id\":\"17793124-05d4-b198-2fde-7ededc63b103\",\"detail-type\":\"Object Created\"," +
2324
"\"source\":\"aws.s3\",\"account\":\"111122223333\",\"time\":\"2021-11-12T00:00:00Z\"," +
2425
"\"region\":\"ca-central-1\",\"resources\":[\"arn:aws:s3:::DOC-EXAMPLE-BUCKET1\"]," +

data-prepper-plugins/s3-source/src/test/java/org/opensearch/dataprepper/plugins/source/s3/parser/S3EventNotificationParserTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.junit.jupiter.api.Test;
1111
import software.amazon.awssdk.services.sqs.model.Message;
1212

13+
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
1314
import static org.hamcrest.CoreMatchers.notNullValue;
1415
import static org.hamcrest.MatcherAssert.assertThat;
1516
import static org.hamcrest.Matchers.equalTo;
@@ -22,7 +23,7 @@ public class S3EventNotificationParserTest {
2223
"\"eventName\":\"ObjectCreated:Put\",\"userIdentity\":{\"principalId\":\"AWS:xyz\"},\"requestParameters\":{\"sourceIPAddress\":\"127.0.0.1\"}," +
2324
"\"responseElements\":{\"x-amz-request-id\":\"xyz\",\"x-amz-id-2\":\"xyz\"},\"s3\":{\"s3SchemaVersion\":\"1.0\"," +
2425
"\"configurationId\":\"xyz\",\"bucket\":{\"name\":\"my-bucket\",\"ownerIdentity\":{\"principalId\":\"ABC\"}," +
25-
"\"arn\":\"arn:aws:s3:::my-bucket\"},\"object\":{\"key\":\"path/to/myfile.log.gz\",\"size\":3159112,\"eTag\":\"abcd123\"," +
26+
"\"arn\":\"arn:aws:s3:::my-bucket\", \"unknownField\":\"test\"},\"object\":{\"key\":\"path/to/myfile.log.gz\",\"size\":3159112,\"eTag\":\"abcd123\"," +
2627
"\"sequencer\":\"000\",\"hasObjectAnnotation\":false}}}]}";
2728

2829
public static final String SNS_BASED_MESSAGE = "{\n" +
@@ -38,7 +39,7 @@ public class S3EventNotificationParserTest {
3839
" \"UnsubscribeURL\" : \"https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:notifications:abc\"\n" +
3940
"}";
4041

41-
private final ObjectMapper objectMapper = new ObjectMapper();
42+
private final ObjectMapper objectMapper = new ObjectMapper().disable(FAIL_ON_UNKNOWN_PROPERTIES);
4243
private Message message;
4344
@BeforeEach
4445
public void setUp() {

0 commit comments

Comments
 (0)