
--Placez les données du serveur surveillé dans S3.
Le format des données est le suivant.
 ```json:servers.json
 {
     "servers": [
         {"name": "Google", "url": "http://www.google.co.jp"},
         {"name": "Yahoo", "url": "http://www.yahoo.co.jp"}
     ]
 }
 ```
--ʻLisez les données ci-dessus depuis AWS Lambda (Python) ʻet créez un accès HTTP à chaque serveur.
--Notifiez «Slack» du résultat de la surveillance.
CloudWatch Events --Schedule.――Voyez ce que vous vouliez réaliser, car il a été entièrement traité ci-dessous. - https://www.joyzo.co.jp/blog/2325
 pour accéder à S3`. pour exécuterLambdasurVPC`.Slack
-Reportez-vous à Incoming Webhooks pour obtenir l'URL de notification à Slack.
AWS Lambda(Python)
lambda_function.py
import json
import requests
import boto3
BUCKET_NAME = 'xxxxxxxxxx'
OBJECT_NAME = 'xxxxxxxxxx/servers.json'
SLACK_POST_URL = 'https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx'
def lambda_handler(event, context):
    json_data = __getServers()
    __check_server(json_data)
def __getServers():
   s3 = boto3.resource('s3')
   obj = s3.Object(BUCKET_NAME, OBJECT_NAME)
   response = obj.get()
   body = response['Body'].read()
   return body.decode('utf-8')
def __check_server(json_data):
    data = json.loads(json_data)
    servers = data['servers']
    has_error = False
    for server in servers:
        name = server['name']
        url = server['url']
        print("Check: " + name)
        try:
            r = requests.get(url)
            if r.status_code != 200:
                __send_error_message(name, url)
                has_error = True
        except requests.exceptions.RequestException as e:
            __send_request_error_message(name, url)
            has_error = True
    if has_error == False:
        __send_success_message()
def __send_error_message(name, url):
    payload = {
        "text": name + '\n' + url + '\n' + '*ERROR!*',
        "icon_emoji": ":x:"
    }
    __send_message(payload)
def __send_request_error_message(name, url):
    payload = {
        "text": name + '\n' + url + '\n' + '*Request Error!*',
        "icon_emoji": ":warning:"
    }
    __send_message(payload)
def __send_success_message():
    payload = {
        "text": "All Servers OK!",
        "icon_emoji": ":o:"
    }
    __send_message(payload)
def __send_message(payload):
    try:
        return requests.post(SLACK_POST_URL, json=payload)
    except requests.exceptions.RequestException as e:
        return None
pip install requests -t .
zip -r lambda_function.zip *
―― «La possibilité de définir un VPC pour AWS Lambda» a rendu possible l'exécution de Lambda avec une adresse IP fixe comme source de données, ce qui a élargi la gamme d'utilisations.
Slack est trop simple et pratique.