#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 (из-за проблем с разрешениями).