Kinesis Firehose未生成CloudWatch日志问题排查求助
Kinesis Firehose 未生成CloudWatch日志排查要点
以下是针对你提供的Terraform代码,可能导致日志未生成的核心排查方向:
1. IAM角色权限缺失(最常见原因)
你的Firehose角色aws_iam_role.sh_firehose_role必须具备写入CloudWatch Logs的权限,否则无法推送日志。检查该角色的权限策略,确保包含以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "${aws_cloudwatch_log_group.AC_firehose_stream_logging_group.arn}:*" ] } ] }
如果之前的策略仅包含S3、Glue相关权限,必须补充上述CloudWatch Logs权限。
2. 确认日志组/流的访问权限
检查CloudWatch日志组的资源策略,确保Firehose服务有权限写入。若存在自定义策略,需确保包含:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "${aws_cloudwatch_log_group.AC_firehose_stream_logging_group.arn}:*", "Condition": { "StringEquals": { "AWS:SourceAccount": "${data.aws_caller_identity.current.account_id}" } } } ] }
3. 验证Firehose是否有数据流入
Firehose仅在有数据处理(成功或失败)时才会生成日志,若没有任何数据发送到Firehose,自然不会有日志产生。可手动发送测试数据到Firehose,观察是否生成日志。
4. 检查格式转换配置的影响
你启用了Parquet格式转换,若Glue表schema与输入数据不匹配,可能导致转换失败,但失败日志应被推送。需确认Firehose角色是否具备访问Glue表的权限,同时检查错误输出路径是否配置正确。
5. 确保Terraform资源创建顺序正确
虽然代码中已存在隐式依赖,仍可显式添加依赖关系到Firehose资源,避免创建顺序问题:
resource "aws_kinesis_firehose_delivery_stream" "extended_s3_stream" { # 现有配置... depends_on = [ aws_cloudwatch_log_stream.AC_firehose_stream_logging_stream, aws_iam_role.sh_firehose_role ] }
内容的提问来源于stack exchange,提问作者Madhawa
相关产品推荐
相关产品推荐

