首页 > 解决方案 > 如何将指标附加到现有的 Lambda 日志组?

问题描述

我正在尝试使用 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 日志组时,我需要采取哪些不同的措施才能使此自定义指标显示为我的 lambda 日志组的过滤器?

如果我对属性进行硬编码,LogGroupName: "/aws/lambda/my-function-name"那么它就可以工作。但我不想对其进行硬编码,因为 ${AWS::StackName} 的值在不同的用例中是动态的。

标签: amazon-web-servicesaws-lambdaamazon-cloudwatch

解决方案


对我来说,解决方案似乎是添加

DependsOn: LambdaLogGroup

其中 LambdaLogGroup 是前面在我的模板中定义的资源。它让我失望了,因为日志组已经存在了一段时间,我试图更新堆栈并添加指标。即使日志组已经存在并且在我添加 Metric 时未由 CloudFormation 更新,这仍然需要依赖项。


推荐阅读