使用来自 Kinesis Data Stream 源的 Kinesis Firehose Delivery Stream 将数据写入 S3 时出现问题

Problem writing data to S3 with Kinesis Firehose Delivery Stream from Kinesis Data Stream source

我正在使用 Kinesis 代理(使用 Docker 图像)将 JSON 文件发送到 Kinesis Data Stream,然后它充当 Kinesis Firehose Delivery Stream 的源,它应该然后将文件写入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

我有一个小的 shell 脚本,它以 2 秒的间隔将 JSON 文件复制到输入文件夹(代理正在监视)。每个文件都被 Kinesis Agent 拾取:

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 存储桶中没有任何内容。

在我的 firehose 中,我将缓冲区条件设置为“1 MB 或 60 秒”并禁用了加密和压缩。这应该允许文件传递到 S3,因为每个文件只包含一个小数组(文件大小~1 KB)。

我很困惑,不太明白还有什么原因。

感谢任何帮助!

所以我自己解决了这个问题。 问题出在我定义的 IAM 策略上。基本上,firehose IAM 角色没有附加适当的角色策略,并且数据没有写入 S3(由于权限问题)。