【发布时间】:2020-06-17 14:02:42
【问题描述】:
我正在尝试使用 CloudFormation 创建自定义指标。我遵循了https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-metricfilter.html 的示例。我现有的 lambda 日志记录到 CloudWatch 日志组,该日志组在 CloudWatch 中显示为 /aws/lambda/my-function-name。这是我的 CloudFormation YAML 指标:
ErrorsLogMetric:
Type: AWS::Logs::MetricFilter
Properties:
LogGroupName: !Sub "/aws/lambda/${AWS::StackName}"
FilterPattern: "[ERROR]"
MetricTransformations:
- MetricValue: "1"
MetricNamespace: "LogMetrics"
MetricName: "MyCustomMetric"
${AWS::StackName} 在运行时解析为“my-function-name”。 CloudFormation 脚本成功运行并表示已创建指标,但当我转到 CloudWatch 的 lambda 日志组时,它显示零过滤器。当通过 CloudFormation 创建此自定义指标时,我需要采取哪些不同的措施才能使该自定义指标显示为我的 lambda 日志组的过滤器?
如果我将该属性硬编码为LogGroupName: "/aws/lambda/my-function-name",那么它可以工作。但我不想对其进行硬编码,因为 ${AWS::StackName} 的值在不同的用例中是动态的。
【问题讨论】:
-
您的模板看起来不错。如果日志组错误,则创建将失败。显示可能没有更新。运行多久后,您查看了日志组?
-
您是否尝试过使用cli的describe-metric-filters来检查过滤器是否存在?我想我和你有类似的经历,在云端创建过滤器后,在控制台中找不到过滤器。
-
您是否在模板中创建日志组?如果是这样,请将
LogGroupName更改为!Ref LogGroupLogicalId。
标签: amazon-web-services aws-lambda amazon-cloudwatch