【问题标题】:Aws composite alarm not working because of syntax error由于语法错误,AWS 复合警报不起作用
【发布时间】:2021-04-21 11:07:32
【问题描述】:

我收到下面提到的 CF 的语法错误

    CMP:
Type: AWS::CloudWatch::CompositeAlarm
DependsOn:
 - QueueUploadWorkerpproximateNumberOfMessagesVisible
 - QueueDataWorkerApproximateAgeOfOldestMessage
Properties:
  AlarmName: CMP
  AlarmDescription: CompositeAlarm
  AlarmRule: (ALARM([!Ref 'ALARM1']) AND ALARM([!Ref 'ALARM2']))
  AlarmActions:
       - !Ref SNSTOPIC

资源处理程序返回消息:“AlarmRule 中的错误 [Unsupported token ''Alarms1']' at char 13, must be: ')'](服务:AmazonCloudWatch;状态代码:400;错误代码:ValidationError;请求 ID: 726ebbbd-2e30-447e-9944-4d72d9b63f2c;代理:null)"(RequestToken:92f75190-0b7e-e6f5-f5c0-d18377a82c4c,HandlerErrorCode:InvalidRequest)

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    您可以使用Sub 引用您的ALARM1ALARM2

    AlarmRule: !Sub "(ALARM(['${ALARM1}']) AND ALARM(['${ALARM2}']))"
    

    您必须仔细检查规则的语法,但现在 ALARM1ALARM2 将被正确引用。

    【讨论】:

    • @wasimmir 因为它的语法不正确。如果要引用字符串中的值,则必须使用 Sub。
    • 它没有用。它指的是不同的arn,并给了我以下错误资源处理程序返回消息:“无法将复合警报保存为警报[arn:aws:cloudwatch:eu-west-1:123456789:alarm:['Alarm1'],警报规则中的 arn:aws:cloudwatch:eu-west-1:123456789:alarm:['Alarm2']] 不存在(服务:AmazonCloudWatch;状态代码:400;错误代码:ValidationError;请求 ID:55b75e37-ed60 -4fed-a2fc-3576acf5dddb;代理:null)"(RequestToken:e8e41628-4296-8107-74fe-0af24cc066b6,HandlerErrorCode:InvalidRequest)
    • @wasimmir 请分享您的完整代码,而不是几行代码。如果没有完整的示例,很难知道错误的上下文是什么。
    • 实际问题中的代码,当我像aws文档中提到的那样硬核队列名称时,它可以工作,但是当我尝试!Ref它时,我得到了错误。就像这个 URL 中的情况一样 docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
    • @wasimmir 你不能使用 !Ref。它的语法错误。什么是 ALARM1 和 ALARM2?您的问题没有提供他们的定义。
    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    相关资源
    最近更新 更多