Amazon web services 无法在Cloudformation模板中为Cloudwatch报警定义数学表达式

Amazon web services 无法在Cloudformation模板中为Cloudwatch报警定义数学表达式,amazon-web-services,amazon-cloudformation,amazon-cloudwatch,Amazon Web Services,Amazon Cloudformation,Amazon Cloudwatch,AWS宣布Cloudwatch警报可以在度量上使用数学表达式。我决定创建一个警报,将两个单一指标的总和与给定阈值进行比较。这意味着根据我的表达式,应该是SUM([m1,m2]),其中m1和m2是两个单独的度量。 我还决定使用cloudformation模板(在yaml中)实现这个想法。以下是Cloudwatch报警定义: BillingAlarmExpression: Type: AWS::CloudWatch::Alarm Properties: AlarmActions:

AWS宣布Cloudwatch警报可以在度量上使用数学表达式。我决定创建一个警报,将两个单一指标的总和与给定阈值进行比较。这意味着根据我的表达式,应该是SUM([m1,m2]),其中m1和m2是两个单独的度量。 我还决定使用cloudformation模板(在yaml中)实现这个想法。以下是Cloudwatch报警定义:

BillingAlarmExpression:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmActions:
      - !Ref BillingAlertTopic
    AlarmDescription: String
    ComparisonOperator: GreaterThanOrEqualToThreshold
    EvaluationPeriods: 1
    Metrics:
      - Id: m1
        MetricStat:
          Metric:
            Dimensions:
              - Name: ServiceName
                Value: AmazonEC2
              - Name: Currency
                Value: USD
            MetricName: Estimated­Charges
            Namespace: AWS/Billing
          Period: 86400
          Stat: Maximum
        ReturnData: False
      - Id: m2
        MetricStat:
          Metric:
            Dimensions:
              - Name: ServiceName
                Value: AmazonCloudwatch
              - Name: Currency
                Value: USD
            MetricName: Estimated­Charges
            Namespace: AWS/Billing
          Period: 86400
          Stat: Maximum
        ReturnData: False
      - Id: Expr1
        Expression: SUM([m1,m2])
        Label: Yeap
    Threshold: 100
    TreatMissingData: ignore
单一指标m1和m2与EC2和Cloudwatch服务的计费成本有关。我想检查的是,这两项服务的收费成本是否超过了100美元的门槛。(注意,由于计费成本只存储在N.Virginia地区,因此我尝试在N.Virginia部署上述模板)。 在部署此模板期间,Cloudformation将响应以下错误:

"Invalid metrics list (Service: AmazonCloudWatch; Status Code: 400; Error Code: ValidationError; Request ID: c0748047-0378-11e9-ac36-5b1829988d18)"
当Cloudformation说“metrics list”时,它指的是m1、m2、Expr1的定义。更奇怪的是,当我从aws cli使用上述指标列表定义时,计费数据成功返回:

aws cloudwatch get-metric-data --metric-data-queries file://./metric-data.json --start-time 2018-12-03T03:00:00Z --end-time 2018-12-10T04:30:00Z
,其中metric-data.json是上述指标列表

在创建模板时,我使用了以下指南: 和


你知道为什么Cloudformation会返回这个错误吗?谢谢

Id
必须以小写字母开头,将
Expr1
更改为
Expr1

发件人:

您可以更改Id的值。它可以包括数字、字母和下划线,并且必须以小写字母开头


是的!这就是问题所在!非常感谢你!不客气!不要忘记接受答案:)@P.Str您是否检查过表达式SUM([m1,m2])是否给出了正确的总和?在我的情况下,它不是。由于“无效指标列表”而被发现,确实可以从Amazon这里使用一些更好的错误消息。非常感谢。