Как изменить электронную почту Cloudwatch в социальных сетях?

Используя это руководство, я создал лямбда-функцию, когда он не работает, сигнал облачного наблюдения заставляет SNS рассылать электронные письма с использованием метрики лямбда-ошибок. Я использую его, чтобы проверить, есть ли у каких-либо экземпляров ec2 upcomming запланированные мероприятия. Прямо сейчас это информация, которую CloudWatch и SNS отправляют в своих электронных письмах:

Alarm Details:
- Name:                       ec2-scheduled-events-alarm
- Description:                an ec2 instance has an upcomming scheduled event
- State Change:               OK -> ALARM
- Reason for State Change:    Threshold Crossed: 1 datapoint (1.0) was greater than or equal to the threshold (1.0).
- Timestamp:                  Wednesday 12 September, 2016 00:16:54 UTC
- AWS Account:                ..........

Threshold:
- The alarm is in the ALARM state when the metric is GreaterThanOrEqualToThreshold 1.0 for 300 seconds. 

Monitored Metric:
- MetricNamespace:            AWS/Lambda
- MetricName:                 Errors
- Dimensions:                 
- Period:                     300 seconds
- Statistic:                  Sum
- Unit:                       not specified

State Change Actions:
- OK: 
- ALARM: [arn:aws:sns:us-west-2:..........:ec2-scheduled-events]
- INSUFFICIENT_DATA: 

Я хотел бы изменить это сообщение, чтобы оно также содержало информацию из моего лямбда-скрипта (например, перечисление экземпляров ec2, которые я определил как сбойные). Как я могу это сделать? Я предполагаю, что это связано с каким-то образом изменить вывод Monitored Metric: - Dimensions:.

Или еще лучше, как я могу просто сделать так, чтобы мои электронные письма содержали вывод журнала моей лямбда-функции?


person Alex Cohen    schedule 14.09.2016    source источник
comment
Вы когда-нибудь задумывались, как мы можем этого добиться?   -  person ketan    schedule 20.09.2018


Ответы (1)


Да, ваша лямбда-функция может публиковать ваше собственное сообщение, которое может быть информацией журнала. Вы не упомянули, какой язык используете, поэтому я просто представлю его на Python.

from __future__ import print_function
import json
import boto3
import logging
import time
import datetime

logger = logging.getLogger()
logger.setLevel(logging.INFO)

def Publish():
        """
        Send a message to the topic
        """

        sns = boto3.client('sns')
        subject = ''
        message = 'Here is the message'
        # You can likely insert the debugging prints from logger into the 
        # message

        # This will have TargetArn - the arn of the topic
        # Subject and message of the email. There are other parameters as 
        # well. Just check out boto3 sns api

        sns.publish(
            TargetArn='arn:',
            Subject= subject,
            Message= message)#of email
  return

Я не уверен, сможете ли вы получить доступ к информации в вашем лямбда-журнале из показанного вами электронного письма SNS по умолчанию. Вариант, который я перечислил, может быть вашим решением. Вам нужно будет создать отдельную тему для социальных сетей и подписаться на нее, так что это может оказаться слишком много накладных расходов для того, что вы ищете.

Надеюсь, это поможет!

(РЕДАКТИРОВАТЬ: теперь я понимаю, что вы спросили об этом 9 месяцев назад, так что вы, вероятно, уже поняли это, упс.)

person user3651225    schedule 07.07.2017