在 AWS CloudWatch 警报生成的消息中未获取 SQS 主题中的完整信息

Not getting complete information in SQS topic in the message generated from AWS CloudWatch alarm

我已经配置了 CloudTrail 事件警报。告警的指标是在日志中发现实例终止的信息时触发告警。该信息将消息发送到 SNS 主题,该主题又调用 SQS。

目前一切正常。但是,当我读取 SQS 时,我只能看到警报的信息,但我想获得被终止实例的详细信息。例如,下面是我看到的:

{
  "Type" : "Notification",
  "MessageId" : "1744f315-1042-5248-99a8-bd637aac7da4",
  "TopicArn" : "arn:aws:sns:us-east-1:873150696559:chefterm",
  "Subject" : "ALARM: \"terminatedchefnodes\" in US - N. Virginia",
  "Message" : "{\"AlarmName\":\"terminatedchefnodes\",\"AlarmDescription\":\"terminatedchefnodes\",\"AWSAccountId\":\"873150696559\",\"NewStateValue\":\"ALARM\",\"NewStateReason\":\"Threshold Crossed: 1 datapoint (1.0) was greater than the threshold (0.0).\",\"StateChangeTime\":\"2015-09-18T19:40:30.459+0000\",\"Region\":\"US - N. Virginia\",\"OldStateValue\":\"INSUFFICIENT_DATA\",\"Trigger\":{\"MetricName\":\"TestChefMetric\",\"Namespace\":\"CloudTrailMetrics\",\"Statistic\":\"AVERAGE\",\"Unit\":null,\"Dimensions\":[],\"Period\":900,\"EvaluationPeriods\":1,\"ComparisonOperator\":\"GreaterThanThreshold\",\"Threshold\":0.0}}",
  "Timestamp" : "2015-09-18T19:40:30.506Z",
  "SignatureVersion" : "1",
  "Signature" : "XpE8xR8S8sZPW0Yp642c2lpfiqP9qpXg1w8HCiD4YyWLRyHaQSR5RfSBk7yANJOtApw2nIUGRgpWzBE0j5RkfW4cvRrEcRLudAqO2N5QhCJfjvl48/AxWh1qmDiyrHmr0sTpSTg4zPbMQUs7nDRrW1QwQ6cqy04PTNJuZfBNfAXBlJNCkmeyJ8+klq6edmDijMy6M4D8kAUQ+trmTqTO29/jvT0+yOtBWBIOwiRDHxRfNIJ2vOWz8mjvyU43YDYZD1AG3hDBuSbs7li/8jkY7arsK2R5mDBhYI+o/w8D/W7qdBOGJlby1umVHX4mLQBwuOdLmSxN0P34cG9feuqdlg==",
  "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-bb750dd426d95ee9390147a5624348ee.pem",
  "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:873150696559:chefterm:467b007c-bb58-4ad6-b05b-ccd159c0515d"
}

但我想查看 CloudTrail 日志中的实例 ID 信息:

AWS CloudTrail 大约每 5 分钟向您的 Amazon S3 存储桶传送一次日志文件。这些文件的传递随后可用于 'trigger' 一些检查是否发生了特定 activity 的代码。 运行 这段代码的一个好方法是 AWS Lambda.

基本流程是:

  1. AWS CloudTrail 在 Amazon S3 中创建一个日志文件
  2. 这会触发对 AWS Lambda 的调用,使用可以确定事件是否感兴趣的自定义代码
  3. 自定义代码可以向 Amazon SNS 发送发布消息,Amazon SNS 可以通过电子邮件、HTTP 等方式传递消息

这里有两篇文章描述了这种设置: