摘要 JSON 消息有效负载



我不熟悉JSON,不确定这是否可能,

背景: 我正在使用 AWS cloudwatch,并使用 AWS SNS 发送 HTTPS 终端节点,即 Twilio。通知很好,在 Hipchat 中按预期工作,简洁明

[ALARM] saas-ajtest-mem-gt-80-5min Threshold Crossed: 2 datapoints [47.9 (07/08/17 01:10:00), 47.9 (07/08/17 01:05:00)] were greater than or equal to the threshold (30.0).

但是当它发送到我的 Twilio 号码时,我会收到所有消息太久。

Type:  "Notification"
MessageId" : "27684767-bf13-5e0f-b02d-15667f98e595"
TopicArn:   "arn:aws:sns:us-east-1:00000000:critical_twilio"
Subject:   "ALARM: "saas-ajtest-mem-gt-80-5min" in US East (N. Virginia)"
Message: {"AlarmName":"saas-ajtest-mem-gt-80-5min""AlarmDescription":null"AWSAccountId":"00000000""NewStateValue":"ALARM""NewStateReason":"Threshold Crossed: 2 datapoints [47.9 (07/08/17 01:10:00) 47.9 (07/08/17 01:05:00)] were greater than or equal to the threshold (30.0).""StateChangeTime":"2017-08-07T01:11:39.708+0000""Region":"US East (N. Virginia)""OldStateValue":"OK""Trigger":{"MetricName":"MemoryUtilization""Namespace":"test""StatisticType":"Statistic""Statistic":"AVERAGE""Unit":null"Dimensions":[{"name":"ContainerName""value":"ajtest"}]"Period":60"EvaluationPeriods":5"ComparisonOperator":"GreaterThanOrEqualToThreshold""Threshold":30.0"TreatMissingData":"""EvaluateLowSampleCountPercentile":""}}"

我想做的是只获取警报名称、阈值交叉、维度名称。基本上我想要一个类似于hipchat的输出。

This my sample groovy script
def slurper = new groovy.json.JsonSlurper()
def result = slurper.parseText( body )
def type = result.Type
def messageID = result.MessageId
def subject = result.Subject
def message = result.Message
def alldata = type + messageID + subject + message

尝试使用

def message = result.Message.AlarmName
def message = result.Message."AlarmName"

但它只会返回空值。

任何意见将不胜感激。提前感谢你:)

实际上找到了一个解决方案,我已经使用了地图

Map<String, String> mappedResult = (Map<String, String>) slurper.parseText( message )

这将得到另一个 json :)

相关内容

最新更新