Mam tabelę Dynamodb z włączoną transmisją strumieniową. Również stworzyłem wyzwalacz dla tej tabeli, która wywołuje funkcję AWS Lambda. W ramach tej funkcji lambda próbuję odczytać nowy obraz (pozycja Dynamodb po modyfikacji) ze strumienia Dynamodb i próbuję uzyskać z niego czysty ciąg jsonów. Moje pytanie brzmi: jak mogę uzyskać czysty łańcuch json elementu DynamoDB, który został wysłany przez strumień? Używam fragmentu kodu podanego poniżej, aby uzyskać nowy obraz, ale nie mam pojęcia, jak usunąć z niego ciąg jsonów. Doceniam Twoją pomoc.Jak uzyskać ciąg czysty Json z nowego strumienia DynamoDB?
public class LambdaFunctionHandler implements RequestHandler<DynamodbEvent, Object> {
@Override
public Object handleRequest(DynamodbEvent input, Context context) {
context.getLogger().log("Input: " + input);
for (DynamodbStreamRecord record : input.getRecords()){
context.getLogger().log(record.getEventID());
context.getLogger().log(record.getEventName());
context.getLogger().log(record.getDynamodb().toString());
Map<String,AttributeValue> currentRecord = record.getDynamodb().getNewImage();
//how to get the pure json string of the new image
//..............................................
}
return "Successfully processed " + input.getRecords().size() + " records.";
}
}
Moją prawdziwą intencją było wysłanie danych z Dynamodb do elastycznego serwera wyszukiwania, gdy element został wstawiony/zaktualizowany/usunięty w Dynamodb. Udało mi się to osiągnąć za pomocą szablonu kodu lambda Pythona, który jest dostępny na konsoli użytkownika AWS (utwórz nową sekcję funkcji lambda). Tak więc bez obaw o uzyskanie czystego łańcucha json z zdarzenia strumienia Dynamodb, udało mi się przesłać dane bezpośrednio ze strumienia Dynamodb do usługi wyszukiwania Amazon Elastic przy użyciu wspomnianego powyżej szablonu kodu. Mam nadzieję, że to pomaga komuś. –