使用Kinesis Firehose Delivery Stream从Kinesis Data Stream源向S3写入数据时出现问题

时间:2019-04-16 19:34:14

标签: amazon-s3 amazon-kinesis amazon-kinesis-firehose amazon-kinesis-agent

我正在使用Kinesis Agent(使用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代理会提取每个文件:

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 Delivery流或S3存储桶中没有任何东西。

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

我很沮丧,不太了解还有什么可能的原因。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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