我使用 Kinesis Agent(使用 Docker 镜像)将 JSON 文件发送到 Kinesis Data Stream,然后 Kinesis Data Stream 充当 Kinesis Firehose Delivery 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 Delivery 流或 S3 存储桶中没有任何内容。
在我的 Firehose 中,我已将缓冲区条件设置为“1 MB 或 60 秒”,并禁用了加密和压缩。这应该允许文件传递到 S3,因为每个文件仅包含一个小数组(文件大小约为 1 KB)。
我很困惑,不太明白还有什么原因。
感谢任何帮助!
最佳答案
所以我自己想出了这个办法。 问题出在我定义的 IAM 策略上。基本上,firehose IAM 角色没有附加适当的角色策略,并且数据未写入 S3(由于权限问题)。
关于amazon-s3 - 使用 Kinesis Firehose Delivery Stream 从 Kinesis Data Stream 源将数据写入 S3 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715459/