Как передать данные Kinesis Firehose в таблицу DynamodB? - PullRequest
2 голосов
/ 12 октября 2019

Поток Kinesis Firehose получает сообщения.
Существует возможность сохранения в S3, но мой вариант использования - вставить в таблицу DynamodB.
В Firehose есть возможность включить функцию Lambda. Должен ли я написать логику вставки в таблицу DynamodB, используя Lambda? Это правильный подход?
Если так, то как вставить записи в DynamoDB, используя лямбду, написанную на Java.

1 Ответ

3 голосов
/ 12 октября 2019

Не существует стандартного способа вставки данных потока Firehose в DynamoDB (например, S3 или Redshift). Рекомендованным способом является создание лямбды и вставка записей в DynamoDB с этим.

Используйте dynamoDB.batchWriteItem или dynamoDB.putItem, подробнее в этой статье или этой .

public String handleRequest(KinesisFirehoseEvent event, Context context)
    List<KinesisFirehoseEvent.Record> records = event.getRecords();
    for(KinesisFirehoseEvent.Record rec : records)
    {
        String recordId = rec.getRecordId();
        String data = StandardCharsets.UTF_8.decode(rec.getData()).toString();

        Item item = transformStringToItem(data);
        // Write the item to the table 
        table.putItem(item);
    }
    return "success";
}

Структура firehoseStream задокументирована здесь , и пример Java-примера: здесь , а также дополнительная информация о firehose to lambda здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...