Проблема записи данных в S3 с потоком доставки Kinesis Firehose из источника потока данных Kinesis

#amazon-s3 #amazon-kinesis #amazon-kinesis-firehose #amazon-kinesis-agent

#amazon-s3 #amazon-kinesis #amazon-kinesis-firehose #amazon-kinesis-agent

Вопрос:

Я отправляю файлы JSON с помощью агента Kinesis (используя образ Docker) в поток данных Kinesis, который затем выступает в качестве источника для потока доставки Kinesis Firehose, который затем должен записывать файлы в S3, но в S3 ничего не отображается.

Данные JSON поступают в поток данных и отображаются в мониторинге, а также в журналах агента:

 2019-04-16 19:00:14.036 0000 6ae9843658b1 (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.Agent [INFO] Agent: Progress: 18947 records parsed (490492 bytes), and 18500 records sent successfully to destinations. Uptime: 900020ms
 

У меня есть небольшой сценарий оболочки, который копирует файлы JSON во входную папку (которую отслеживает агент) с интервалом в 2 секунды. Каждый файл подбирается агентом Kinesis:

 2019-04-16 19:00:15.015 0000 6ae9843658b1 (FileTailer[kinesis:dev-kinesis-stream:/tmp/stream/*.json]) com.amazon.kinesis.streaming.agent.tailing.KinesisParser [INFO] KinesisParser[kinesis:dev-kinesis-stream:/tmp/stream/*.json]: Continuing to parse /tmp/stream/testfile00001.json.
 

Однако в мой поток доставки Firehose или в корзину S3 ничего не поступает.

В моем пожарном шланге я установил условия буфера на «1 МБ или 60 секунд» и отключил шифрование и сжатие. Это должно позволить файлам проходить через S3, поскольку каждый файл содержит только небольшой массив (размер файла ~ 1 КБ).

Я в тупике и не совсем понимаю, что еще может быть причиной.

Любая помощь приветствуется!

Ответ №1:

Итак, я понял это самостоятельно. Проблема заключалась в политиках IAM, которые я определил. По сути, к роли firehose IAM не были привязаны соответствующие политики ролей, и данные не записывались в S3 (из-за проблем с разрешениями).