无法通过Terraform创建AWS Glue日志指标过滤器,报错找不到日志组
解决Terraform创建CloudWatch日志指标过滤器时找不到日志组的问题
常见问题排查与解决方法
1. 日志组名称匹配问题
AWS控制台对日志组名称的末尾斜杠兼容,但Terraform的aws_cloudwatch_log_group数据源可能严格匹配名称。试试去掉名称末尾的斜杠:
data "aws_cloudwatch_log_group" "aws_glue_log" { name = "/aws-glue/python-jobs" }
或者直接在指标过滤器资源中指定日志组名称,跳过数据源查询:
resource "aws_cloudwatch_log_metric_filter" "event_filter" { name = "someNAme" pattern = "ALERT" log_group_name = "/aws-glue/python-jobs/" metric_transformation { name = "filtermetric" namespace = "Glue" value = "1" default_value = "0" } }
2. 凭证或区域不匹配
- 确认Terraform使用的AWS账号和控制台一致,且凭证拥有
logs:DescribeLogGroups权限。 - 检查Terraform的AWS区域配置,确保和日志组所在区域相同:
provider "aws" { region = "your-region" # 替换为日志组实际所在区域 }
3. 日志组未提前创建
如果该日志组是Glue作业首次运行时自动生成的,Terraform执行时可能还不存在。可以用count条件判断,仅当日志组存在时创建指标过滤器:
data "aws_cloudwatch_log_group" "aws_glue_log" { name = "/aws-glue/python-jobs/" } resource "aws_cloudwatch_log_metric_filter" "event_filter" { count = data.aws_cloudwatch_log_group.aws_glue_log.exists ? 1 : 0 name = "someNAme" pattern = "ALERT" log_group_name = data.aws_cloudwatch_log_group.aws_glue_log.name metric_transformation { name = "filtermetric" namespace = "Glue" value = "1" default_value = "0" } }
内容的提问来源于stack exchange,提问作者vivek ashodha
相关产品推荐
相关产品推荐

