我正在尝试使用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}”在运行时解析为“我的功能名称”。 CloudFormation脚本成功运行,并说该指标已创建,但是当我转到CloudWatch时,我的lambda的日志组显示零个过滤器。通过CloudFormation创建该自定义指标时,我需要做些什么来使此自定义指标显示为我的lambda日志组的过滤器?
如果我将该属性硬编码为LogGroupName: "/aws/lambda/my-function-name"
,那么它将起作用。但是我不想对其进行硬编码,因为$ {AWS :: StackName}的值在不同的用例中是动态的。
对我来说,解决方案似乎是要添加
DependsOn: LambdaLogGroup
其中LambdaLogGroup是我模板中先前定义的资源。这让我失望了,因为日志组已经存在了一段时间,并且我试图更新堆栈并添加指标。即使添加了Metric的日志组已经存在并且未被CloudFormation更新,该问题仍然需要依赖。