忘れないように。
今回は、
- LogGroupにログ名
- LogStreamにインスタンスIDとIP
を指定しています。
from __future__ import print_function
import base64
import json
import zlib
import logging
import pycurl
import urllib
from base64 import b64decode
from urllib2 import Request, urlopen, URLError, HTTPError
logger = logging.getLogger()
logger.setLevel(logging.INFO)
api_token = "token"
room_id = "id"
room_message = "https://api.chatwork.com/".format(room_id)
incoming_url = "https://hooks.slack.com/incoming"
def lambda_handler(event, context):
data = zlib.decompress(base64.b64decode(event['awslogs']['data']), 16+zlib.MAX_WBITS)
data_json = json.loads(data)
send_message = data_json['logGroup'] + '\n' + data_json['logStream']
for logEvent in data_json['logEvents']:
logEvent_json = json.loads(json.dumps(logEvent, ensure_ascii=False))
send_message = send_message + '\n' + logEvent_json['message']
logger.info("send message is " + send_message)
option = {'body': send_message}
cw_headers = { 'X-ChatWorkToken' : api_token }
cw_req = Request(room_message, urllib.urlencode(option), cw_headers)
try:
cw_response = urlopen(cw_req)
cw_response.read()
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)
slack_message = {
'channel': 'notice_dms',
'text': send_message
}
sl_req = Request(incoming_url, json.dumps(slack_message))
try:
sl_response = urlopen(sl_req)
sl_response.read()
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)