Ich spreche in der Firma "Ramu but Ramu" und für mich, ein ehemaliges C #, ist es so etwas wie eine Programmiersprache? Ich dachte, aber es war nicht so. (In C # gibt es einen Lambda-Ausdruck.)
Intern habe ich die Laufzeit von node.js auf AWS Lambda platziert und sie über Slack informiert, aber mir wurde gesagt, dass die Version von node alt ist und ich sie bald nicht mehr unterstützen werde. Deshalb habe ich beschlossen, zu Python zu wechseln. (Weil es eine Person in der Firma gab, die Python besser kannte als Node)
AWS Lambda bietet eine allgemeine Verarbeitung als Vorlagen, daher ist dies recht einfach. Ich werde das Verfahren zusammenfassen.
Befolgen Sie ungefähr die folgenden Schritte.
Das Endergebnis wird ungefähr so sein.
Erstellen Sie diesmal die Hauptfunktion von Lambda. Sie können es leicht machen, indem Sie den Anweisungen folgen. Seien Sie versichert, dass Sie es einfach neu erstellen oder löschen können.
Wählen Sie Lambda aus der Serviceliste.
Beginnen Sie mit der Erstellung der Lambda-Funktion.
Wenn Sie Slack in den Filter eingeben, können Sie eine Vorlage für Slack erstellen. Dieses Mal erstellen wir sie jedoch mit Leerzeichen.
Wir werden den Auslöser später setzen, also lassen Sie ihn leer.
SNS = Simple Notification Service. Es ist ein Dienst, der eine Verarbeitung oder Statusänderung erhält und Sie als Nachricht benachrichtigt. Sie können Nachrichten an E-Mails und Lamda wie diese senden. Der Service selbst wurde bis zum 06. April 2017 nicht übersetzt, aber ich denke, es gibt kein Problem, da es sich um einfaches Englisch handelt.
Erstellen Sie einen SNS und hängen Sie das Abonnement an.
Abonnements erstellen.
Wählen Sie die gerade erstellte Lambda-Funktion aus
Stellen Sie den Alarm auf dem EC2-Bildschirm ein.
Nehmen Sie verschiedene Einstellungen vor
Die Einstellungen sind wie folgt.
Diesmal habe ich es wie folgt eingestellt.
@Code
lambda_handler.py
from __future__ import print_function
import boto3
import json
import logging
import os
from urllib2 import Request, urlopen, URLError, HTTPError
#lockere Einstellungen
SLACK_CHANNEL = os.environ['SLACK_CHANNEL']
HOOK_URL = os.environ['HOOK_URL']
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info("Event: " + str(event))
message = json.loads(event['Records'][0]['Sns']['Message'])
logger.info("Message: " + str(message))
alarm_name = message['AlarmName']
description = message['AlarmDescription']
new_state = message['NewStateValue']
reason = message['NewStateReason']
if new_state == 'OK':
emoji = ":+1:"
elif new_state == 'ALARM':
emoji = ":exclamation:"
slack_message = {
'channel': SLACK_CHANNEL,
'text': "*%s %s: %s*\n %s\n %s" % (emoji, new_state, alarm_name, description, reason)
}
req = Request(HOOK_URL, json.dumps(slack_message))
try:
response = urlopen(req)
response.read()
logger.info("Message posted to %s", slack_message['channel'])
except HTTPError as e:
logger.error("Request failed: %d %s", e.code, e.reason)
except URLError as e:
logger.error("Server connection failed: %s", e.reason)
@Umgebungsvariable + Arufa
Gehen Sie auf dem Lambda-Bildschirm wie folgt vor:
Dies ist Miso, aber ich hoffe, Sie können sich für die Testdaten darauf beziehen.
Eine Benachrichtigung wurde erfolgreich an den Sandbox-Kanal gesendet. Es enthält auch Piktogramme.
Mit einem einfachen Programm konnte ich eine Slack-Benachrichtigung realisieren. Stellen Sie die Metriken entsprechend ein und genießen Sie ein komfortables AWS-Leben. (Selbst wenn Sie mich benachrichtigen, macht es keinen Sinn, wenn Sie es nicht ansehen ...)
Darüber hinaus scheint es, dass nur SNS, die in derselben Region erstellt wurden, über Lambda festgelegt werden können. Wenn Sie also Regionen überqueren möchten, wählen Sie Lambda aus SNS jeder Region aus.
Zuerst habe ich versucht, die Umgebungsvariablen von Lambda zu verwenden, aber ich konnte sie nicht verwenden, da bei base64 ein Fehler aufgetreten ist. Wenn Sie dies verwenden können, kann die Lambda-Funktion problemlos wiederverwendet werden, sodass ich bei der nächsten Gelegenheit ordnungsgemäß damit umgehen werde.