AWS LambdaからAutifyのテスト結果を取得→失敗していたらPagerDutyで通知させるスクリプト
TL;DR(要約)
import sys import os import traceback import json import boto3 import logging import requests import pypd # logger logger = logging.getLogger() logger.setLevel(logging.INFO) AUTIFY_API_KEY = os.environ["AUTIFY_API_KEY"] AUTIFY_URL = os.environ["AUTIFY_URL"] PAGERDUTY_INTEGRATION_KEY = os.environ["PAGERDUTY_INTEGRATION_KEY"] def lambda_handler(event, context): """ AutifyのAPIを叩き、テストの実行結果を取得する。取得した結果が失敗の場合PagerDutyに通知する """ logger.info("func: {}".format(sys._getframe().f_code.co_name)) logger.info(f"event: {event}") headers = { "Authorization": "Bearer {}".format(AUTIFY_API_KEY) } r = requests.get(AUTIFY_URL, headers=headers) test_results_list = r.json() logger.info(f"test_results_list: {test_results_list}") # 最新のテスト結果 latest_test_results = test_results_list[0] logger.info(f"latest_test_results: {latest_test_results}") print(latest_test_results) latest_test_status = latest_test_results["status"] if latest_test_status == "passed": logger.info("message: The Autify Test Status was Success.") return 200 # テスト結果 pypd.EventV2.create(data={ 'routing_key': PAGERDUTY_INTEGRATION_KEY, 'event_action': 'trigger', 'payload': { 'summary': 'Autify Test Failed', 'severity': 'error', 'source': 'Autify Test Failed', } }) logger.info("message: The Autify Test was Failed, Notfiy Pagerduty.") return 200 if __name__ == '__main__': try: # lambda_handler("event", "context") lambda_handler(event, context) except Exception as e: exc_type, exc_value, exc_traceback = sys.exc_info() stack_trace = traceback.format_exception( exc_type, exc_value, exc_traceback) logger.error(''.join(stack_trace)) sys.exit(1) finally: sys.exit(0)
コードの解説
以下、コードの解説を行います。
必要なライブラリをインポートします。
- sys, os, traceback, json, boto3, logging, requests, pypd
ロガーを設定します。
- ログレベルをINFOに設定しています。
lambda_handler
関数を定義します。- AutifyのAPIを呼び出して、テストの実行結果を取得します。
- 取得したテスト結果のリストから最新のテスト結果を取得し、それが成功か失敗かを判断します。
- テストが成功した場合、ログに成功メッセージを出力します。
- テストが失敗した場合、PagerDutyに通知します。
メイン関数で
lambda_handler
関数を呼び出します。- エラーが発生した場合、スタックトレースをログに出力し、終了ステータス1で終了します。
- 最後に終了ステータス0で終了します。
Autifyのテスト結果を監視し、問題が発生した場合にPagerDutyを通じて通知することで、開発チームが迅速に対応できるようになります。
これにより、問題が長期間放置されることを防ぎ、サービスの品質向上に貢献します。