Posted at

Lambdaでヘルスチェックするコードのメモ

More than 1 year has passed since last update.

完全自分用メモですよ。

# -*- coding: utf-8 -*-

import commands
import os
import boto3

print('Loading function')

## SNS送信関数
def sendmsg():
TOPIC_ARN = u'arn:aws:sns:ap-northeast-1:******'

msg = "Please check for https://www.example.com/"
subject = u'Site is down!!'
client = boto3.client('sns')

request = {
'TopicArn': TOPIC_ARN,
'Message': msg,
'Subject': subject
}

response = client.publish(**request)

#Linuxのコマンド実行関数
def _(cmd):
return commands.getoutput(cmd)

def lambda_handler(event, context):
#ヘルスチェックで問題がない場合に表示する文字列
ok_string = "ok"

#ヘルスチェックで問題がある場合に表示する文字列
ng_string = "ng"

#実行するcurlコマンド
curl_cmd = 'curl -LI https://www.example.com/ -o /dev/null -w \'%{http_code}\\n\' -s'

#curlコマンドの実行
response = _(curl_cmd)

#レスポンスのログへの記録
print("----------response body start.----------")
print(response)
print("----------response body end.------------")

#ステータスコードの判定
if response == ("200"):
print("Status is 200")
return {"result": ok_string}
else:
print("Status is not 200")
sendmsg()
return {"result": ng_string}