From 51be44df381687ea54061918046e68de91e041f7 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Fri, 20 May 2022 22:16:48 +0900 Subject: [PATCH 01/18] =?UTF-8?q?feat:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-fin-receive-check-daily.py | 190 ++++++++++++++++++ ...ging-lambda-sap-sup-receive-check-daily.py | 190 ++++++++++++++++++ 2 files changed, 380 insertions(+) create mode 100644 lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py create mode 100644 lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py new file mode 100644 index 00000000..1f25ca32 --- /dev/null +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -0,0 +1,190 @@ +import os +import datetime +import boto3 +import io +import re +import sys + +# 環境変数 +CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] +CONFIG_BUCKET_NAME = os.environ["CONFIG_BUCKET_NAME"] +RECEIVE_DAILY_FILE_NAME_LIST_PATH = os.environ["RECEIVE_DAILY_FILE_NAME_LIST_PATH"] +NON_BUSINESS_DAY_LIST_PATH = os.environ["NON_BUSINESS_DAY_LIST_PATH"] +NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_PATH"] +NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"] +MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"] +MAIL_BODY_REPLACE_SYMBOL = os.environ["MAIL_BODY_REPLACE_SYMBOL"] +NDS_NOTICE_TOPIC = os.environ["NDS_NOTICE_TOPIC"] +NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] + +# 定数 +ROW_COMMENT_SYMBOL = '#' + +# 変数 +s3_client = boto3.client('s3') +s3_resource = boto3.resource('s3') +sns_client = boto3.client('sns') +mail_msg = '' + + +def lambda_handler(event, context): + try: + # ① 処理開始ログを出力する + info_log('I-01-01', '処理開始 SAP_finデータ受領チェック処理(日次)') + today = datetime.date.today().strftime('%Y/%m/%d') + info_log('I-01-02', f'処理稼働日:{today}') + + # ② 営業日チェック処理を行う + info_log('I-02-01', '営業日チェック処理開始') + + # 1.設定ファイル[非営業日設定ファイル]を読み込む + try: + info_log('I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) + non_business_day_response = non_business_day_obj.get() + info_log('I-02-03', '非営業日設定ファイルを読み込みました') + except Exception as e: + error_log('E-02-01', '非営業日設定ファイルの読み込みに失敗しました') + error_process('E-02-01', e) + + # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する + try: + today = datetime.date.today() + info_log('I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + non_date_list = [] + for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): + if row[0] == ROW_COMMENT_SYMBOL: + continue + date = row.strip('/') + non_date = datetime.date(date[0], date[1], date[2]) + non_date_list.append(non_date) + if today in non_date_list: + info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') + sys.exit() + else: + info_log('I-02-06', '本日は営業日のため、チェック処理を実施します') + except Exception as e: + error_log('E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') + error_process('E-02-02', e) + + # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル(日次)]を読み込む + try: + info_log('I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) + receive_daily_file_name_response = receive_daily_file_name_obj.get() + info_log('I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + except Exception as e: + error_log('E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') + error_process('E-03-01', e) + + # ④ 日次チェック処理を行う + info_log('I-04-01', '日次チェック処理開始') + + # 1.オブジェクトリストを取得する + info_log('I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') + object_prefix = f'{today.strftime("%Y")}/{today.strftime("%m")}/{today.strftime("%d")}/' + object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) + + # 2.日次I/Fファイルチェック処理 + info_log('I-04-03', '日次I/Fファイルチェック処理開始') + info_log('I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + row_count = 0 + match_count = 0 + for i, row in enumerate(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'), 1): + row_count = i + file_exsit = False + for object in object_list: + object_key = object.key.rsplit('/', 1) + file_name = object_key[-1] + match_result = re.fullmatch(row[0], file_name) + if match_result is not None: + file_exsit = True + break + if file_exsit == True: + match_count += 1 + info_log('I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + else: + error_log('E-04-01', f'日次I/Fファイルに不足があります ファイル名:{file_name}') + mail_msg = f'  {row[1]}\n' + if row_count == match_count: + info_log('I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + + # ⑤ メール通知本文に出力内容が存在するか確認する + info_log('I-05-01', 'メール送信処理開始') + + if len(mail_msg) > 0: + # 1.存在した場合 + info_log('I-05-02', f'{today} 日次I/Fファイルは全て受領しているため、メール送信処理を開始します') + + try: + info_log('I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) + mail_title = mail_title_obj['Body'].read().decode('utf-8') + info_log('I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + except Exception as e: + error_log('E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') + error_process('E-05-01', e) + + try: + info_log('I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) + mail_body_response = mail_body_obj['Body'].read().decode('utf-8') + mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) + info_log('I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + except Exception as e: + error_log('E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') + error_process('E-05-02', e) + + info_log('I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + params = { + 'TopicArn': MBJ_SAP_NOTICE_TOPIC, + 'Subject': mail_title, + 'Message': mail_body + } + sns_client.publish(**params) + info_log('I-05-08', 'メール送信指示をしました') + else: + # 2.存在しない場合 + info_log('I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + + # ⑥ 処理終了ログを出力する + info_log('I-06-01', '処理終了 SAP_finデータ受領チェック処理(日次)') + except Exception as e: + error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def info_log(log_id, msg): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Info {log_id} {msg}') + except Exception as e: + error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def error_log(log_id, msg): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error {log_id} {msg}') + except Exception as e: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def error_process(error_log_id, exception): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') + + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' + params = { + 'TopicArn': NDS_NOTICE_TOPIC, + 'Subject': NDS_NOTICE_TITLE, + 'Message': error_msg + } + sns_client.publish(**params) + + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') + sys.exit() + except Exception as e: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + sys.exit() diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py new file mode 100644 index 00000000..3067d65c --- /dev/null +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -0,0 +1,190 @@ +import os +import datetime +import boto3 +import io +import re +import sys + +# 環境変数 +CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] +CONFIG_BUCKET_NAME = os.environ["CONFIG_BUCKET_NAME"] +RECEIVE_DAILY_FILE_NAME_LIST_PATH = os.environ["RECEIVE_DAILY_FILE_NAME_LIST_PATH"] +NON_BUSINESS_DAY_LIST_PATH = os.environ["NON_BUSINESS_DAY_LIST_PATH"] +NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_PATH"] +NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"] +MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"] +MAIL_BODY_REPLACE_SYMBOL = os.environ["MAIL_BODY_REPLACE_SYMBOL"] +NDS_NOTICE_TOPIC = os.environ["NDS_NOTICE_TOPIC"] +NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] + +# 定数 +ROW_COMMENT_SYMBOL = '#' + +# 変数 +s3_client = boto3.client('s3') +s3_resource = boto3.resource('s3') +sns_client = boto3.client('sns') +mail_msg = '' + + +def lambda_handler(event, context): + try: + # ① 処理開始ログを出力する + info_log('I-01-01', '処理開始 SAP_supデータ受領チェック処理(日次)') + today = datetime.date.today().strftime('%Y/%m/%d') + info_log('I-01-02', f'処理稼働日:{today}') + + # ② 営業日チェック処理を行う + info_log('I-02-01', '営業日チェック処理開始') + + # 1.設定ファイル[非営業日設定ファイル]を読み込む + try: + info_log('I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) + non_business_day_response = non_business_day_obj.get() + info_log('I-02-03', '非営業日設定ファイルを読み込みました') + except Exception as e: + error_log('E-02-01', '非営業日設定ファイルの読み込みに失敗しました') + error_process('E-02-01', e) + + # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する + try: + today = datetime.date.today() + info_log('I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + non_date_list = [] + for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): + if row[0] == ROW_COMMENT_SYMBOL: + continue + date = row.strip('/') + non_date = datetime.date(date[0], date[1], date[2]) + non_date_list.append(non_date) + if today in non_date_list: + info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') + sys.exit() + else: + info_log('I-02-06', '本日は営業日のため、チェック処理を実施します') + except Exception as e: + error_log('E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') + error_process('E-02-02', e) + + # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル(日次)]を読み込む + try: + info_log('I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) + receive_daily_file_name_response = receive_daily_file_name_obj.get() + info_log('I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + except Exception as e: + error_log('E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') + error_process('E-03-01', e) + + # ④ 日次チェック処理を行う + info_log('I-04-01', '日次チェック処理開始') + + # 1.オブジェクトリストを取得する + info_log('I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') + object_prefix = f'{today.strftime("%Y")}/{today.strftime("%m")}/{today.strftime("%d")}/' + object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) + + # 2.日次I/Fファイルチェック処理 + info_log('I-04-03', '日次I/Fファイルチェック処理開始') + info_log('I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + row_count = 0 + match_count = 0 + for i, row in enumerate(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'), 1): + row_count = i + file_exsit = False + for object in object_list: + object_key = object.key.rsplit('/', 1) + file_name = object_key[-1] + match_result = re.fullmatch(row[0], file_name) + if match_result is not None: + file_exsit = True + break + if file_exsit == True: + match_count += 1 + info_log('I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + else: + error_log('E-04-01', f'日次I/Fファイルに不足があります ファイル名:{file_name}') + mail_msg = f'  {row[1]}\n' + if row_count == match_count: + info_log('I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + + # ⑤ メール通知本文に出力内容が存在するか確認する + info_log('I-05-01', 'メール送信処理開始') + + if len(mail_msg) > 0: + # 1.存在した場合 + info_log('I-05-02', f'{today} 日次I/Fファイルは全て受領しているため、メール送信処理を開始します') + + try: + info_log('I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) + mail_title = mail_title_obj['Body'].read().decode('utf-8') + info_log('I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + except Exception as e: + error_log('E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') + error_process('E-05-01', e) + + try: + info_log('I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) + mail_body_response = mail_body_obj['Body'].read().decode('utf-8') + mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) + info_log('I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + except Exception as e: + error_log('E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') + error_process('E-05-02', e) + + info_log('I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + params = { + 'TopicArn': MBJ_SAP_NOTICE_TOPIC, + 'Subject': mail_title, + 'Message': mail_body + } + sns_client.publish(**params) + info_log('I-05-08', 'メール送信指示をしました') + else: + # 2.存在しない場合 + info_log('I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + + # ⑥ 処理終了ログを出力する + info_log('I-06-01', '処理終了 SAP_supデータ受領チェック処理(日次)') + except Exception as e: + error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def info_log(log_id, msg): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Info {log_id} {msg}') + except Exception as e: + error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def error_log(log_id, msg): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error {log_id} {msg}') + except Exception as e: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + error_process('E-99', e) + + +def error_process(error_log_id, exception): + try: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') + + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' + params = { + 'TopicArn': NDS_NOTICE_TOPIC, + 'Subject': NDS_NOTICE_TITLE, + 'Message': error_msg + } + sns_client.publish(**params) + + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') + sys.exit() + except Exception as e: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + sys.exit() From 380bd9d652891985800b9e74b387588ce13f6302 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 23 May 2022 15:26:58 +0900 Subject: [PATCH 02/18] =?UTF-8?q?fin:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E6=97=A5=E4=BB=98=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E9=83=A8=E5=88=86=E3=81=A7=E5=9E=8B?= =?UTF-8?q?=E3=81=8C=E7=9B=B8=E9=81=95=E3=81=97=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=82=92=E6=96=87=E5=AD=97=E5=88=97=E5=9E=8B=E3=81=AB?= =?UTF-8?q?=E5=90=88=E3=82=8F=E3=81=9B=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 2 +- ...mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 1f25ca32..a803ac15 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -56,7 +56,7 @@ def lambda_handler(event, context): if row[0] == ROW_COMMENT_SYMBOL: continue date = row.strip('/') - non_date = datetime.date(date[0], date[1], date[2]) + non_date = datetime.date(date[0], date[1], date[2]).strftime('%Y/%m/%d') non_date_list.append(non_date) if today in non_date_list: info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 3067d65c..ef07f415 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -56,7 +56,7 @@ def lambda_handler(event, context): if row[0] == ROW_COMMENT_SYMBOL: continue date = row.strip('/') - non_date = datetime.date(date[0], date[1], date[2]) + non_date = datetime.date(date[0], date[1], date[2]).strftime('%Y/%m/%d') non_date_list.append(non_date) if today in non_date_list: info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') From 45dfa53d22e09f337a0c228429c0a69fe0e7157d Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 23 May 2022 21:58:18 +0900 Subject: [PATCH 03/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E4=B8=8B=E7=94=B0=E3=81=95?= =?UTF-8?q?=E3=82=93=E5=9D=82=E4=BA=95=E3=81=95=E3=82=93=E6=8C=87=E6=91=98?= =?UTF-8?q?=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-sup-receive-check-daily.py | 129 +++++++++--------- 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index ef07f415..52914bb4 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -4,6 +4,7 @@ import boto3 import io import re import sys +import csv # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -19,162 +20,160 @@ NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] # 定数 ROW_COMMENT_SYMBOL = '#' +LOG_INFO = 'Info' +LOG_ERROR = 'Error' +INDEX_REGEX = 0 +INDEX_DATA_NAME = 1 +INDEX_ROW_COMMENT_SYMBOL = 0 +INDEX_SPLIT_NUM = 0 +INDEX_LAST = -1 # 変数 s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') sns_client = boto3.client('sns') -mail_msg = '' def lambda_handler(event, context): try: # ① 処理開始ログを出力する - info_log('I-01-01', '処理開始 SAP_supデータ受領チェック処理(日次)') + print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_supデータ受領チェック処理(日次)') today = datetime.date.today().strftime('%Y/%m/%d') - info_log('I-01-02', f'処理稼働日:{today}') + print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{today}') + mail_msg = '' # ② 営業日チェック処理を行う - info_log('I-02-01', '営業日チェック処理開始') + print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') # 1.設定ファイル[非営業日設定ファイル]を読み込む try: - info_log('I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - info_log('I-02-03', '非営業日設定ファイルを読み込みました') + print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') except Exception as e: - error_log('E-02-01', '非営業日設定ファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') error_process('E-02-01', e) # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する try: - today = datetime.date.today() - info_log('I-02-04', f'本日が非営業日かチェックします チェック日:{today}') - non_date_list = [] + print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + none_business_day_list = [] for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): - if row[0] == ROW_COMMENT_SYMBOL: + if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - date = row.strip('/') - non_date = datetime.date(date[0], date[1], date[2]).strftime('%Y/%m/%d') - non_date_list.append(non_date) - if today in non_date_list: - info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') + non_date = datetime.datetime.strptime(row, "%Y/%m/%d").strftime('%Y/%m/%d') + none_business_day_list .append(non_date) + if today in none_business_day_list: + print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') sys.exit() else: - info_log('I-02-06', '本日は営業日のため、チェック処理を実施します') + print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') except Exception as e: - error_log('E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') + print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') error_process('E-02-02', e) # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル(日次)]を読み込む try: - info_log('I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + print_log(LOG_INFO, 'I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - info_log('I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - error_log('E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') error_process('E-03-01', e) # ④ 日次チェック処理を行う - info_log('I-04-01', '日次チェック処理開始') + print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') # 1.オブジェクトリストを取得する - info_log('I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') - object_prefix = f'{today.strftime("%Y")}/{today.strftime("%m")}/{today.strftime("%d")}/' + print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') + object_prefix = f'{today}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) # 2.日次I/Fファイルチェック処理 - info_log('I-04-03', '日次I/Fファイルチェック処理開始') - info_log('I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + print_log(LOG_INFO, 'I-04-03', '日次I/Fファイルチェック処理開始') + print_log(LOG_INFO, 'I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') row_count = 0 match_count = 0 - for i, row in enumerate(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'), 1): + receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') + for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): row_count = i - file_exsit = False + file_exists = False for object in object_list: - object_key = object.key.rsplit('/', 1) - file_name = object_key[-1] - match_result = re.fullmatch(row[0], file_name) + object_key = object.key.rsplit('/', INDEX_SPLIT_NUM) + file_name = object_key[INDEX_LAST] + match_result = re.fullmatch(row[INDEX_REGEX], file_name) if match_result is not None: - file_exsit = True + file_exists = True break - if file_exsit == True: + if file_exists == True: match_count += 1 - info_log('I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + print_log(LOG_INFO, 'I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - error_log('E-04-01', f'日次I/Fファイルに不足があります ファイル名:{file_name}') - mail_msg = f'  {row[1]}\n' + print_log(LOG_ERROR, 'E-04-01', f'日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + mail_msg = f'{mail_msg}  {row[INDEX_DATA_NAME]}\n' if row_count == match_count: - info_log('I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') # ⑤ メール通知本文に出力内容が存在するか確認する - info_log('I-05-01', 'メール送信処理開始') + print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - info_log('I-05-02', f'{today} 日次I/Fファイルは全て受領しているため、メール送信処理を開始します') + print_log(LOG_INFO, 'I-05-02', f'{today} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - info_log('I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - info_log('I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - error_log('E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') error_process('E-05-01', e) try: - info_log('I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - info_log('I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - error_log('E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') error_process('E-05-02', e) - info_log('I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - info_log('I-05-08', 'メール送信指示をしました') + print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') else: # 2.存在しない場合 - info_log('I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + print_log(LOG_INFO, 'I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - info_log('I-06-01', '処理終了 SAP_supデータ受領チェック処理(日次)') + print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_supデータ受領チェック処理(日次)') except Exception as e: - error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') error_process('E-99', e) -def info_log(log_id, msg): +def print_log(log_level, log_id, msg): try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Info {log_id} {msg}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') except Exception as e: - error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) - - -def error_log(log_id, msg): - try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error {log_id} {msg}') - except Exception as e: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') error_process('E-99', e) def error_process(error_log_id, exception): try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' params = { 'TopicArn': NDS_NOTICE_TOPIC, @@ -183,8 +182,8 @@ def error_process(error_log_id, exception): } sns_client.publish(**params) - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') sys.exit() except Exception as e: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') sys.exit() From d652dd76bf4f7b82e3bbb82f6fe50b16f6617815 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 23 May 2022 22:00:21 +0900 Subject: [PATCH 04/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E4=B8=8B=E7=94=B0=E3=81=95?= =?UTF-8?q?=E3=82=93=E5=9D=82=E4=BA=95=E3=81=95=E3=82=93=E6=8C=87=E6=91=98?= =?UTF-8?q?=E5=8F=8D=E6=98=A0(fin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-fin-receive-check-daily.py | 129 +++++++++--------- 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index a803ac15..ec57b49b 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -4,6 +4,7 @@ import boto3 import io import re import sys +import csv # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -19,162 +20,160 @@ NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] # 定数 ROW_COMMENT_SYMBOL = '#' +LOG_INFO = 'Info' +LOG_ERROR = 'Error' +INDEX_REGEX = 0 +INDEX_DATA_NAME = 1 +INDEX_ROW_COMMENT_SYMBOL = 0 +INDEX_SPLIT_NUM = 0 +INDEX_LAST = -1 # 変数 s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') sns_client = boto3.client('sns') -mail_msg = '' def lambda_handler(event, context): try: # ① 処理開始ログを出力する - info_log('I-01-01', '処理開始 SAP_finデータ受領チェック処理(日次)') + print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_finデータ受領チェック処理(日次)') today = datetime.date.today().strftime('%Y/%m/%d') - info_log('I-01-02', f'処理稼働日:{today}') + print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{today}') + mail_msg = '' # ② 営業日チェック処理を行う - info_log('I-02-01', '営業日チェック処理開始') + print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') # 1.設定ファイル[非営業日設定ファイル]を読み込む try: - info_log('I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - info_log('I-02-03', '非営業日設定ファイルを読み込みました') + print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') except Exception as e: - error_log('E-02-01', '非営業日設定ファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') error_process('E-02-01', e) # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する try: - today = datetime.date.today() - info_log('I-02-04', f'本日が非営業日かチェックします チェック日:{today}') - non_date_list = [] + print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + none_business_day_list = [] for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): - if row[0] == ROW_COMMENT_SYMBOL: + if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - date = row.strip('/') - non_date = datetime.date(date[0], date[1], date[2]).strftime('%Y/%m/%d') - non_date_list.append(non_date) - if today in non_date_list: - info_log('I-02-05', '本日は非営業日のため、チェック処理をスキップします') + non_date = datetime.datetime.strptime(row, "%Y/%m/%d").strftime('%Y/%m/%d') + none_business_day_list .append(non_date) + if today in none_business_day_list: + print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') sys.exit() else: - info_log('I-02-06', '本日は営業日のため、チェック処理を実施します') + print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') except Exception as e: - error_log('E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') + print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') error_process('E-02-02', e) # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル(日次)]を読み込む try: - info_log('I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + print_log(LOG_INFO, 'I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - info_log('I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - error_log('E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') error_process('E-03-01', e) # ④ 日次チェック処理を行う - info_log('I-04-01', '日次チェック処理開始') + print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') # 1.オブジェクトリストを取得する - info_log('I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') - object_prefix = f'{today.strftime("%Y")}/{today.strftime("%m")}/{today.strftime("%d")}/' + print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') + object_prefix = f'{today}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) # 2.日次I/Fファイルチェック処理 - info_log('I-04-03', '日次I/Fファイルチェック処理開始') - info_log('I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + print_log(LOG_INFO, 'I-04-03', '日次I/Fファイルチェック処理開始') + print_log(LOG_INFO, 'I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') row_count = 0 match_count = 0 - for i, row in enumerate(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'), 1): + receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') + for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): row_count = i - file_exsit = False + file_exists = False for object in object_list: - object_key = object.key.rsplit('/', 1) - file_name = object_key[-1] - match_result = re.fullmatch(row[0], file_name) + object_key = object.key.rsplit('/', INDEX_SPLIT_NUM) + file_name = object_key[INDEX_LAST] + match_result = re.fullmatch(row[INDEX_REGEX], file_name) if match_result is not None: - file_exsit = True + file_exists = True break - if file_exsit == True: + if file_exists == True: match_count += 1 - info_log('I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + print_log(LOG_INFO, 'I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - error_log('E-04-01', f'日次I/Fファイルに不足があります ファイル名:{file_name}') - mail_msg = f'  {row[1]}\n' + print_log(LOG_ERROR, 'E-04-01', f'日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + mail_msg = f'{mail_msg}  {row[INDEX_DATA_NAME]}\n' if row_count == match_count: - info_log('I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') # ⑤ メール通知本文に出力内容が存在するか確認する - info_log('I-05-01', 'メール送信処理開始') + print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - info_log('I-05-02', f'{today} 日次I/Fファイルは全て受領しているため、メール送信処理を開始します') + print_log(LOG_INFO, 'I-05-02', f'{today} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - info_log('I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - info_log('I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - error_log('E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') error_process('E-05-01', e) try: - info_log('I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - info_log('I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - error_log('E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') + print_log(LOG_ERROR, 'E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') error_process('E-05-02', e) - info_log('I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - info_log('I-05-08', 'メール送信指示をしました') + print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') else: # 2.存在しない場合 - info_log('I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + print_log(LOG_INFO, 'I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - info_log('I-06-01', '処理終了 SAP_finデータ受領チェック処理(日次)') + print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_finデータ受領チェック処理(日次)') except Exception as e: - error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') + print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') error_process('E-99', e) -def info_log(log_id, msg): +def print_log(log_level, log_id, msg): try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Info {log_id} {msg}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') except Exception as e: - error_log('E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) - - -def error_log(log_id, msg): - try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error {log_id} {msg}') - except Exception as e: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') error_process('E-99', e) def error_process(error_log_id, exception): try: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' params = { 'TopicArn': NDS_NOTICE_TOPIC, @@ -183,8 +182,8 @@ def error_process(error_log_id, exception): } sns_client.publish(**params) - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') sys.exit() except Exception as e: - print(f'{datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') + print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') sys.exit() From ddd6e7bdd8fd5d7b05300df64356e9714b3e02d5 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 23 May 2022 22:32:50 +0900 Subject: [PATCH 05/18] =?UTF-8?q?docs:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E9=83=A8=E5=88=86=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...wdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 52914bb4..64cff64f 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -45,7 +45,7 @@ def lambda_handler(event, context): # ② 営業日チェック処理を行う print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') - # 1.設定ファイル[非営業日設定ファイル]を読み込む + # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) @@ -55,7 +55,7 @@ def lambda_handler(event, context): print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') error_process('E-02-01', e) - # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する + # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') none_business_day_list = [] @@ -86,7 +86,7 @@ def lambda_handler(event, context): # ④ 日次チェック処理を行う print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') - # 1.オブジェクトリストを取得する + # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') object_prefix = f'{today}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) @@ -116,7 +116,7 @@ def lambda_handler(event, context): if row_count == match_count: print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') - # ⑤ メール通知本文に出力内容が存在するか確認する + # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') if len(mail_msg) > 0: From 211210b0272a072465c751aebe616bd993b07633 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 23 May 2022 22:36:15 +0900 Subject: [PATCH 06/18] =?UTF-8?q?docs:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E9=83=A8=E5=88=86=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=9F(fin)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...wdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index ec57b49b..6a65c5f4 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -45,7 +45,7 @@ def lambda_handler(event, context): # ② 営業日チェック処理を行う print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') - # 1.設定ファイル[非営業日設定ファイル]を読み込む + # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) @@ -55,7 +55,7 @@ def lambda_handler(event, context): print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') error_process('E-02-01', e) - # 2.処理稼働日が「1」で読み込んだ「非営業日設定ファイル」に存在するか確認する + # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') none_business_day_list = [] @@ -86,7 +86,7 @@ def lambda_handler(event, context): # ④ 日次チェック処理を行う print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') - # 1.オブジェクトリストを取得する + # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') object_prefix = f'{today}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) @@ -116,7 +116,7 @@ def lambda_handler(event, context): if row_count == match_count: print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') - # ⑤ メール通知本文に出力内容が存在するか確認する + # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') if len(mail_msg) > 0: From c6f07b94a3cd6a9f1a28fc807da08852254f8fce Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Tue, 24 May 2022 23:05:16 +0900 Subject: [PATCH 07/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E5=8B=95=E4=BD=9C=E7=A2=BA?= =?UTF-8?q?=E8=AA=8D=E6=99=82=E3=81=AB=E7=99=BA=E7=94=9F=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=82=A8=E3=83=A9=E3=83=BC=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-fin-receive-check-daily.py | 44 +++++++++--------- ...ging-lambda-sap-sup-receive-check-daily.py | 46 +++++++++---------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 6a65c5f4..de8b880c 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -38,8 +38,8 @@ def lambda_handler(event, context): try: # ① 処理開始ログを出力する print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_finデータ受領チェック処理(日次)') - today = datetime.date.today().strftime('%Y/%m/%d') - print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{today}') + execute_date = datetime.date.today().strftime('%Y/%m/%d') + print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う @@ -52,26 +52,26 @@ def lambda_handler(event, context): non_business_day_response = non_business_day_obj.get() print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') - error_process('E-02-01', e) + print_log(LOG_ERROR, 'E-02-01', f'非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - non_date = datetime.datetime.strptime(row, "%Y/%m/%d").strftime('%Y/%m/%d') + non_date = datetime.datetime.strptime(row.rstrip('\n'), "%Y/%m/%d").strftime('%Y/%m/%d') none_business_day_list .append(non_date) - if today in none_business_day_list: + if execute_date in none_business_day_list: print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') sys.exit() else: print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') except Exception as e: - print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') - error_process('E-02-02', e) + print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i} エラー内容:{e}') + error_exit('E-02-02', e) # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル(日次)]を読み込む try: @@ -80,15 +80,15 @@ def lambda_handler(event, context): receive_daily_file_name_response = receive_daily_file_name_obj.get() print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') - error_process('E-03-01', e) + print_log(LOG_ERROR, 'E-03-01', f'日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-03-01', e) # ④ 日次チェック処理を行う print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') - object_prefix = f'{today}/' + print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) # 2.日次I/Fファイルチェック処理 @@ -121,7 +121,7 @@ def lambda_handler(event, context): if len(mail_msg) > 0: # 1.存在した場合 - print_log(LOG_INFO, 'I-05-02', f'{today} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + print_log(LOG_INFO, 'I-05-02', f'{execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') @@ -129,8 +129,8 @@ def lambda_handler(event, context): mail_title = mail_title_obj['Body'].read().decode('utf-8') print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') - error_process('E-05-01', e) + print_log(LOG_ERROR, 'E-05-01', f'通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-05-01', e) try: print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') @@ -139,8 +139,8 @@ def lambda_handler(event, context): mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') - error_process('E-05-02', e) + print_log(LOG_ERROR, 'E-05-02', f'通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-05-02', e) print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { @@ -152,13 +152,13 @@ def lambda_handler(event, context): print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') else: # 2.存在しない場合 - print_log(LOG_INFO, 'I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + print_log(LOG_INFO, 'I-05-09', f'{execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_finデータ受領チェック処理(日次)') except Exception as e: print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) + error_exit('E-99', e) def print_log(log_level, log_id, msg): @@ -166,10 +166,10 @@ def print_log(log_level, log_id, msg): print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') except Exception as e: print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) + error_exit('E-99', e) -def error_process(error_log_id, exception): +def error_exit(error_log_id, exception): try: print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 64cff64f..79bc4ac9 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -25,7 +25,7 @@ LOG_ERROR = 'Error' INDEX_REGEX = 0 INDEX_DATA_NAME = 1 INDEX_ROW_COMMENT_SYMBOL = 0 -INDEX_SPLIT_NUM = 0 +INDEX_SPLIT_NUM = 1 INDEX_LAST = -1 # 変数 @@ -38,8 +38,8 @@ def lambda_handler(event, context): try: # ① 処理開始ログを出力する print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_supデータ受領チェック処理(日次)') - today = datetime.date.today().strftime('%Y/%m/%d') - print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{today}') + execute_date = datetime.date.today().strftime('%Y/%m/%d') + print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う @@ -52,26 +52,26 @@ def lambda_handler(event, context): non_business_day_response = non_business_day_obj.get() print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-02-01', '非営業日設定ファイルの読み込みに失敗しました') - error_process('E-02-01', e) + print_log(LOG_ERROR, 'E-02-01', f'非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{today}') + print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - non_date = datetime.datetime.strptime(row, "%Y/%m/%d").strftime('%Y/%m/%d') + non_date = datetime.datetime.strptime(row.rstrip('\n'), "%Y/%m/%d").strftime('%Y/%m/%d') none_business_day_list .append(non_date) - if today in none_business_day_list: + if execute_date in none_business_day_list: print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') sys.exit() else: print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') except Exception as e: - print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i}') - error_process('E-02-02', e) + print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i} エラー内容:{e}') + error_exit('E-02-02', e) # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル(日次)]を読み込む try: @@ -80,15 +80,15 @@ def lambda_handler(event, context): receive_daily_file_name_response = receive_daily_file_name_obj.get() print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-03-01', '日次I/Fファイルネーム設定ファイルの読み込みに失敗しました') - error_process('E-03-01', e) + print_log(LOG_ERROR, 'E-03-01', f'日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-03-01', e) # ④ 日次チェック処理を行う print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{today}/') - object_prefix = f'{today}/' + print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) # 2.日次I/Fファイルチェック処理 @@ -121,7 +121,7 @@ def lambda_handler(event, context): if len(mail_msg) > 0: # 1.存在した場合 - print_log(LOG_INFO, 'I-05-02', f'{today} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + print_log(LOG_INFO, 'I-05-02', f'{execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') @@ -129,8 +129,8 @@ def lambda_handler(event, context): mail_title = mail_title_obj['Body'].read().decode('utf-8') print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-01', '通知メール(タイトル)テンプレートファイルの読み込みに失敗しました') - error_process('E-05-01', e) + print_log(LOG_ERROR, 'E-05-01', f'通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-05-01', e) try: print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') @@ -139,8 +139,8 @@ def lambda_handler(event, context): mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-02', '通知メール(本文)テンプレートファイルの読み込みに失敗しました') - error_process('E-05-02', e) + print_log(LOG_ERROR, 'E-05-02', f'通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + error_exit('E-05-02', e) print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { @@ -152,13 +152,13 @@ def lambda_handler(event, context): print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') else: # 2.存在しない場合 - print_log(LOG_INFO, 'I-05-09', f'{today} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + print_log(LOG_INFO, 'I-05-09', f'{execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_supデータ受領チェック処理(日次)') except Exception as e: print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) + error_exit('E-99', e) def print_log(log_level, log_id, msg): @@ -166,10 +166,10 @@ def print_log(log_level, log_id, msg): print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') except Exception as e: print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - error_process('E-99', e) + error_exit('E-99', e) -def error_process(error_log_id, exception): +def error_exit(error_log_id, exception): try: print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') From 040901bae9a500512356356b62c1548da86ae638 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Wed, 25 May 2022 19:23:04 +0900 Subject: [PATCH 08/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=82=B3=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E6=8C=87=E6=91=98=E9=83=A8?= =?UTF-8?q?=E5=88=86=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-fin-receive-check-daily.py | 158 ++++++++++-------- ...ging-lambda-sap-sup-receive-check-daily.py | 156 +++++++++-------- 2 files changed, 177 insertions(+), 137 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index de8b880c..5dcff2ae 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -3,8 +3,8 @@ import datetime import boto3 import io import re -import sys import csv +import logging # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -20,160 +20,168 @@ NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] # 定数 ROW_COMMENT_SYMBOL = '#' -LOG_INFO = 'Info' -LOG_ERROR = 'Error' INDEX_REGEX = 0 INDEX_DATA_NAME = 1 INDEX_ROW_COMMENT_SYMBOL = 0 -INDEX_SPLIT_NUM = 0 +INDEX_SPLIT_NUM = 1 INDEX_LAST = -1 +# メール本文に出力する不足ファイル名一覧のインデント +MAIL_INDENT = '  ' # 変数 s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') sns_client = boto3.client('sns') +# logger設定 +logger = logging.getLogger() +logger.setLevel(logging.INFO) +formatter = logging.Formatter( + '[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(message)s\n', + '%Y-%m-%d %H:%M:%S' +) +for handler in logger.handlers: + handler.setFormatter(formatter) + def lambda_handler(event, context): try: # ① 処理開始ログを出力する - print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_finデータ受領チェック処理(日次)') + logging.info('I-01-01 処理開始 SAP_finデータ受領チェック処理(日次)') execute_date = datetime.date.today().strftime('%Y/%m/%d') - print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{execute_date}') + logging.info(f'I-01-02 処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う - print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') + logging.info('I-02-01 営業日チェック処理開始') # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: - print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + logging.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') + logging.info('I-02-03 非営業日設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-02-01', f'非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-02-01', e) + logging.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{execute_date}') + logging.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] - for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): + for row in io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - non_date = datetime.datetime.strptime(row.rstrip('\n'), "%Y/%m/%d").strftime('%Y/%m/%d') + non_date = row.rstrip('\n') + # 日付妥当性判定 + try: + datetime.datetime.strptime(non_date, "%Y/%m/%d") + except Exception as e: + raise e none_business_day_list .append(non_date) if execute_date in none_business_day_list: - print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') - sys.exit() + logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') + return else: - print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') + logging.info('I-02-06 本日は営業日のため、チェック処理を実施します') except Exception as e: - print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i} エラー内容:{e}') - error_exit('E-02-02', e) + logging.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') + raise NoneBusinessDayException('E-02-02', e) # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル(日次)]を読み込む try: - print_log(LOG_INFO, 'I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + logging.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + logging.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-03-01', f'日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-03-01', e) + logging.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-03-01', e) # ④ 日次チェック処理を行う - print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') + logging.info('I-04-01 日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + logging.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) + file_list = [] + for obj in object_list: + obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) + file_list.append(obj_key[INDEX_LAST]) # 2.日次I/Fファイルチェック処理 - print_log(LOG_INFO, 'I-04-03', '日次I/Fファイルチェック処理開始') - print_log(LOG_INFO, 'I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = 0 + logging.info('I-04-03 日次I/Fファイルチェック処理開始') + logging.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): - row_count = i file_exists = False - for object in object_list: - object_key = object.key.rsplit('/', INDEX_SPLIT_NUM) - file_name = object_key[INDEX_LAST] + for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) if match_result is not None: file_exists = True break if file_exists == True: match_count += 1 - print_log(LOG_INFO, 'I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + logging.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - print_log(LOG_ERROR, 'E-04-01', f'日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') - mail_msg = f'{mail_msg}  {row[INDEX_DATA_NAME]}\n' + logging.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + mail_msg += f'{MAIL_INDENT}{row[INDEX_DATA_NAME]}\n' if row_count == match_count: - print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + logging.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する - print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') + logging.info('I-05-01 メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - print_log(LOG_INFO, 'I-05-02', f'{execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + logging.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + logging.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + logging.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-01', f'通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-05-01', e) + logging.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-05-01', e) try: - print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + logging.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + logging.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-02', f'通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-05-02', e) + logging.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-05-02', e) - print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + logging.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') + logging.info('I-05-08 メール送信指示をしました') else: # 2.存在しない場合 - print_log(LOG_INFO, 'I-05-09', f'{execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + logging.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_finデータ受領チェック処理(日次)') + logging.info('I-06-01 処理終了 SAP_finデータ受領チェック処理(日次)') + except CustomException as e: + error_notice(e.id, e.arg) except Exception as e: - print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_exit('E-99', e) + logging.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + error_notice('E-99', e) + return -def print_log(log_level, log_id, msg): +def error_notice(error_log_id, exception) -> None: try: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') - except Exception as e: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - error_exit('E-99', e) - - -def error_exit(error_log_id, exception): - try: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') - - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' params = { 'TopicArn': NDS_NOTICE_TOPIC, @@ -181,9 +189,21 @@ def error_exit(error_log_id, exception): 'Message': error_msg } sns_client.publish(**params) - - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') - sys.exit() + logging.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - sys.exit() + logging.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + return + + +class CustomException(Exception): + def __init__(self, id, arg): + self.arg = arg + self.id = id + + +class FileReadException(CustomException): + pass + + +class NoneBusinessDayException(CustomException): + pass diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 79bc4ac9..5c87970a 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -3,8 +3,8 @@ import datetime import boto3 import io import re -import sys import csv +import logging # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -20,160 +20,168 @@ NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] # 定数 ROW_COMMENT_SYMBOL = '#' -LOG_INFO = 'Info' -LOG_ERROR = 'Error' INDEX_REGEX = 0 INDEX_DATA_NAME = 1 INDEX_ROW_COMMENT_SYMBOL = 0 INDEX_SPLIT_NUM = 1 INDEX_LAST = -1 +# メール本文に出力する不足ファイル名一覧のインデント +MAIL_INDENT = '  ' # 変数 s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') sns_client = boto3.client('sns') +# logger設定 +logger = logging.getLogger() +logger.setLevel(logging.INFO) +formatter = logging.Formatter( + '[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(message)s\n', + '%Y-%m-%d %H:%M:%S' +) +for handler in logger.handlers: + handler.setFormatter(formatter) + def lambda_handler(event, context): try: # ① 処理開始ログを出力する - print_log(LOG_INFO, 'I-01-01', '処理開始 SAP_supデータ受領チェック処理(日次)') + logging.info('I-01-01 処理開始 SAP_supデータ受領チェック処理(日次)') execute_date = datetime.date.today().strftime('%Y/%m/%d') - print_log(LOG_INFO, 'I-01-02', f'処理稼働日:{execute_date}') + logging.info(f'I-01-02 処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う - print_log(LOG_INFO, 'I-02-01', '営業日チェック処理開始') + logging.info('I-02-01 営業日チェック処理開始') # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: - print_log(LOG_INFO, 'I-02-02', f'非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + logging.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - print_log(LOG_INFO, 'I-02-03', '非営業日設定ファイルを読み込みました') + logging.info('I-02-03 非営業日設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-02-01', f'非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-02-01', e) + logging.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - print_log(LOG_INFO, 'I-02-04', f'本日が非営業日かチェックします チェック日:{execute_date}') + logging.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] - for i, row in enumerate(io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'), 1): + for row in io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: continue - non_date = datetime.datetime.strptime(row.rstrip('\n'), "%Y/%m/%d").strftime('%Y/%m/%d') + non_date = row.rstrip('\n') + # 日付妥当性判定 + try: + datetime.datetime.strptime(non_date, "%Y/%m/%d") + except Exception as e: + raise e none_business_day_list .append(non_date) if execute_date in none_business_day_list: - print_log(LOG_INFO, 'I-02-05', '本日は非営業日のため、チェック処理をスキップします') - sys.exit() + logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') + return else: - print_log(LOG_INFO, 'I-02-06', '本日は営業日のため、チェック処理を実施します') + logging.info('I-02-06 本日は営業日のため、チェック処理を実施します') except Exception as e: - print_log(LOG_ERROR, 'E-02-02', f'メルク社非営業日設定ファイルに不備があります 行数:{i} エラー内容:{e}') - error_exit('E-02-02', e) + logging.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') + raise NoneBusinessDayException('E-02-02', e) # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル(日次)]を読み込む try: - print_log(LOG_INFO, 'I-03-01', f'日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + logging.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - print_log(LOG_INFO, 'I-03-02', '日次I/Fファイルネーム設定ファイルを読み込みました') + logging.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-03-01', f'日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-03-01', e) + logging.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-03-01', e) # ④ 日次チェック処理を行う - print_log(LOG_INFO, 'I-04-01', '日次チェック処理開始') + logging.info('I-04-01 日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - print_log(LOG_INFO, 'I-04-02', f'オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + logging.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) + file_list = [] + for obj in object_list: + obj_key = obj.key.rsplit('/', INDEX_SPLIT_NUM) + file_list.append(obj_key[INDEX_LAST]) # 2.日次I/Fファイルチェック処理 - print_log(LOG_INFO, 'I-04-03', '日次I/Fファイルチェック処理開始') - print_log(LOG_INFO, 'I-04-04', '取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = 0 + logging.info('I-04-03 日次I/Fファイルチェック処理開始') + logging.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): - row_count = i file_exists = False - for object in object_list: - object_key = object.key.rsplit('/', INDEX_SPLIT_NUM) - file_name = object_key[INDEX_LAST] + for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) if match_result is not None: file_exists = True break if file_exists == True: match_count += 1 - print_log(LOG_INFO, 'I-04-05', f'日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + logging.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - print_log(LOG_ERROR, 'E-04-01', f'日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') - mail_msg = f'{mail_msg}  {row[INDEX_DATA_NAME]}\n' + logging.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + mail_msg += f'{MAIL_INDENT}{row[INDEX_DATA_NAME]}\n' if row_count == match_count: - print_log(LOG_INFO, 'I-04-06', '日次I/Fファイルは全て受領していることを確認しました') + logging.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する - print_log(LOG_INFO, 'I-05-01', 'メール送信処理開始') + logging.info('I-05-01 メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - print_log(LOG_INFO, 'I-05-02', f'{execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + logging.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - print_log(LOG_INFO, 'I-05-03', f'通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + logging.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - print_log(LOG_INFO, 'I-05-04', '通知メール(タイトル)テンプレートファイルを読み込みました') + logging.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-01', f'通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-05-01', e) + logging.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-05-01', e) try: - print_log(LOG_INFO, 'I-05-05', f'通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + logging.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - print_log(LOG_INFO, 'I-05-06', '通知メール(本文)テンプレートファイルを読み込みました') + logging.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - print_log(LOG_ERROR, 'E-05-02', f'通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') - error_exit('E-05-02', e) + logging.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + raise FileReadException('E-05-02', e) - print_log(LOG_INFO, 'I-05-07', f'メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + logging.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - print_log(LOG_INFO, 'I-05-08', 'メール送信指示をしました') + logging.info('I-05-08 メール送信指示をしました') else: # 2.存在しない場合 - print_log(LOG_INFO, 'I-05-09', f'{execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + logging.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - print_log(LOG_INFO, 'I-06-01', '処理終了 SAP_supデータ受領チェック処理(日次)') + logging.info('I-06-01 処理終了 SAP_supデータ受領チェック処理(日次)') + except CustomException as e: + error_notice(e.id, e.arg) except Exception as e: - print_log(LOG_ERROR, 'E-99', f'想定外のエラーが発生しました エラー内容:{e}') - error_exit('E-99', e) + logging.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + error_notice('E-99', e) + return -def print_log(log_level, log_id, msg): +def error_notice(error_log_id, exception) -> None: try: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} {log_level} {log_id} {msg}') - except Exception as e: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - error_exit('E-99', e) - - -def error_exit(error_log_id, exception): - try: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-01 エラー処理開始') - - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-02 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' params = { 'TopicArn': NDS_NOTICE_TOPIC, @@ -181,9 +189,21 @@ def error_exit(error_log_id, exception): 'Message': error_msg } sns_client.publish(**params) - - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-ERR-03 エラー終了 処理を中断します') - sys.exit() + logging.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: - print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S} Error E-99 想定外のエラーが発生しました エラー内容:{e}') - sys.exit() + logging.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + return + + +class CustomException(Exception): + def __init__(self, id, arg): + self.arg = arg + self.id = id + + +class FileReadException(CustomException): + pass + + +class NoneBusinessDayException(CustomException): + pass From ce214017eb89791c8207559e688dbcdfdae9d4ee Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Wed, 25 May 2022 19:35:35 +0900 Subject: [PATCH 09/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=83=AD=E3=82=B0=E3=83=AC?= =?UTF-8?q?=E3=83=99=E3=83=AB=E3=82=92=E7=92=B0=E5=A2=83=E5=A4=89=E6=95=B0?= =?UTF-8?q?=E3=81=A7=E8=A8=AD=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...2021-staging-lambda-sap-fin-receive-check-daily.py | 11 ++++++++--- ...2021-staging-lambda-sap-sup-receive-check-daily.py | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 5dcff2ae..cedc103c 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -17,6 +17,7 @@ MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"] MAIL_BODY_REPLACE_SYMBOL = os.environ["MAIL_BODY_REPLACE_SYMBOL"] NDS_NOTICE_TOPIC = os.environ["NDS_NOTICE_TOPIC"] NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] +LOG_LEVEL = os.environ["LOG_LEVEL"] # 定数 ROW_COMMENT_SYMBOL = '#' @@ -25,6 +26,7 @@ INDEX_DATA_NAME = 1 INDEX_ROW_COMMENT_SYMBOL = 0 INDEX_SPLIT_NUM = 1 INDEX_LAST = -1 + # メール本文に出力する不足ファイル名一覧のインデント MAIL_INDENT = '  ' @@ -35,14 +37,17 @@ sns_client = boto3.client('sns') # logger設定 logger = logging.getLogger() -logger.setLevel(logging.INFO) formatter = logging.Formatter( - '[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(message)s\n', + '[%(levelname)s]\t%(asctime)s\t%(message)s\n', '%Y-%m-%d %H:%M:%S' ) for handler in logger.handlers: handler.setFormatter(formatter) +level = logging.getLevelName(LOG_LEVEL) +if not isinstance(level, int): + level = logging.INFO +logger.setLevel(level) def lambda_handler(event, context): try: @@ -78,7 +83,7 @@ def lambda_handler(event, context): datetime.datetime.strptime(non_date, "%Y/%m/%d") except Exception as e: raise e - none_business_day_list .append(non_date) + none_business_day_list.append(non_date) if execute_date in none_business_day_list: logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') return diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 5c87970a..be82a7e4 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -17,6 +17,7 @@ MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"] MAIL_BODY_REPLACE_SYMBOL = os.environ["MAIL_BODY_REPLACE_SYMBOL"] NDS_NOTICE_TOPIC = os.environ["NDS_NOTICE_TOPIC"] NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"] +LOG_LEVEL = os.environ["LOG_LEVEL"] # 定数 ROW_COMMENT_SYMBOL = '#' @@ -25,6 +26,7 @@ INDEX_DATA_NAME = 1 INDEX_ROW_COMMENT_SYMBOL = 0 INDEX_SPLIT_NUM = 1 INDEX_LAST = -1 + # メール本文に出力する不足ファイル名一覧のインデント MAIL_INDENT = '  ' @@ -35,14 +37,17 @@ sns_client = boto3.client('sns') # logger設定 logger = logging.getLogger() -logger.setLevel(logging.INFO) formatter = logging.Formatter( - '[%(levelname)s]\t%(asctime)s.%(msecs)dZ\t%(message)s\n', + '[%(levelname)s]\t%(asctime)s\t%(message)s\n', '%Y-%m-%d %H:%M:%S' ) for handler in logger.handlers: handler.setFormatter(formatter) +level = logging.getLevelName(LOG_LEVEL) +if not isinstance(level, int): + level = logging.INFO +logger.setLevel(level) def lambda_handler(event, context): try: @@ -78,7 +83,7 @@ def lambda_handler(event, context): datetime.datetime.strptime(non_date, "%Y/%m/%d") except Exception as e: raise e - none_business_day_list .append(non_date) + none_business_day_list.append(non_date) if execute_date in none_business_day_list: logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') return From 031dcdd02eccd0f345c345b0e7ffa5cf58f6a089 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Wed, 25 May 2022 22:27:29 +0900 Subject: [PATCH 10/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20logger=E3=81=AE=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20=E3=82=AB=E3=82=B9=E3=82=BF=E3=83=A0Exception=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E3=82=92=E6=8A=BD=E8=B1=A1=E5=8C=96=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ging-lambda-sap-fin-receive-check-daily.py | 74 ++++++++++--------- ...ging-lambda-sap-sup-receive-check-daily.py | 74 ++++++++++--------- 2 files changed, 76 insertions(+), 72 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index cedc103c..c175d15c 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -5,6 +5,7 @@ import io import re import csv import logging +from abc import * # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -49,30 +50,31 @@ if not isinstance(level, int): level = logging.INFO logger.setLevel(level) + def lambda_handler(event, context): try: # ① 処理開始ログを出力する - logging.info('I-01-01 処理開始 SAP_finデータ受領チェック処理(日次)') + logger.info('I-01-01 処理開始 SAP_finデータ受領チェック処理(日次)') execute_date = datetime.date.today().strftime('%Y/%m/%d') - logging.info(f'I-01-02 処理稼働日:{execute_date}') + logger.info(f'I-01-02 処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う - logging.info('I-02-01 営業日チェック処理開始') + logger.info('I-02-01 営業日チェック処理開始') # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: - logging.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - logging.info('I-02-03 非営業日設定ファイルを読み込みました') + logger.info('I-02-03 非営業日設定ファイルを読み込みました') except Exception as e: - logging.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - logging.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') + logger.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] for row in io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: @@ -85,29 +87,29 @@ def lambda_handler(event, context): raise e none_business_day_list.append(non_date) if execute_date in none_business_day_list: - logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') + logger.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') return else: - logging.info('I-02-06 本日は営業日のため、チェック処理を実施します') + logger.info('I-02-06 本日は営業日のため、チェック処理を実施します') except Exception as e: - logging.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') + logger.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') raise NoneBusinessDayException('E-02-02', e) # ③ 設定ファイル[SAP_finI/Fファイルネーム設定ファイル(日次)]を読み込む try: - logging.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - logging.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') + logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - logging.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-03-01', e) # ④ 日次チェック処理を行う - logging.info('I-04-01 日次チェック処理開始') + logger.info('I-04-01 日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - logging.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) file_list = [] @@ -116,8 +118,8 @@ def lambda_handler(event, context): file_list.append(obj_key[INDEX_LAST]) # 2.日次I/Fファイルチェック処理 - logging.info('I-04-03 日次I/Fファイルチェック処理開始') - logging.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + logger.info('I-04-03 日次I/Fファイルチェック処理開始') + logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') @@ -130,57 +132,57 @@ def lambda_handler(event, context): break if file_exists == True: match_count += 1 - logging.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + logger.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - logging.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + logger.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') mail_msg += f'{MAIL_INDENT}{row[INDEX_DATA_NAME]}\n' if row_count == match_count: - logging.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') + logger.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する - logging.info('I-05-01 メール送信処理開始') + logger.info('I-05-01 メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - logging.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + logger.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - logging.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + logger.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - logging.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') + logger.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - logging.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-05-01', e) try: - logging.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + logger.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - logging.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') + logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - logging.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-05-02', e) - logging.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + logger.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - logging.info('I-05-08 メール送信指示をしました') + logger.info('I-05-08 メール送信指示をしました') else: # 2.存在しない場合 - logging.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + logger.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - logging.info('I-06-01 処理終了 SAP_finデータ受領チェック処理(日次)') + logger.info('I-06-01 処理終了 SAP_finデータ受領チェック処理(日次)') except CustomException as e: error_notice(e.id, e.arg) except Exception as e: - logging.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + logger.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') error_notice('E-99', e) return @@ -194,13 +196,13 @@ def error_notice(error_log_id, exception) -> None: 'Message': error_msg } sns_client.publish(**params) - logging.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + logger.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: - logging.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + logger.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') return -class CustomException(Exception): +class CustomException(Exception, metaclass=ABCMeta): def __init__(self, id, arg): self.arg = arg self.id = id diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index be82a7e4..524322ca 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -5,6 +5,7 @@ import io import re import csv import logging +from abc import * # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -49,30 +50,31 @@ if not isinstance(level, int): level = logging.INFO logger.setLevel(level) + def lambda_handler(event, context): try: # ① 処理開始ログを出力する - logging.info('I-01-01 処理開始 SAP_supデータ受領チェック処理(日次)') + logger.info('I-01-01 処理開始 SAP_supデータ受領チェック処理(日次)') execute_date = datetime.date.today().strftime('%Y/%m/%d') - logging.info(f'I-01-02 処理稼働日:{execute_date}') + logger.info(f'I-01-02 処理稼働日:{execute_date}') mail_msg = '' # ② 営業日チェック処理を行う - logging.info('I-02-01 営業日チェック処理開始') + logger.info('I-02-01 営業日チェック処理開始') # 1.設定ファイル[メルク社非営業日設定ファイル]を読み込む try: - logging.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') + logger.info(f'I-02-02 非営業日設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NON_BUSINESS_DAY_LIST_PATH}') non_business_day_obj = s3_resource.Object(CONFIG_BUCKET_NAME, NON_BUSINESS_DAY_LIST_PATH) non_business_day_response = non_business_day_obj.get() - logging.info('I-02-03 非営業日設定ファイルを読み込みました') + logger.info('I-02-03 非営業日設定ファイルを読み込みました') except Exception as e: - logging.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-02-01 非営業日設定ファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-02-01', e) # 2.処理稼働日が「②1.」で読み込んだ「メルク社非営業日設定ファイル」に存在するか確認する try: - logging.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') + logger.info(f'I-02-04 本日が非営業日かチェックします チェック日:{execute_date}') none_business_day_list = [] for row in io.TextIOWrapper(io.BytesIO(non_business_day_response["Body"].read()), encoding='utf-8'): if row[INDEX_ROW_COMMENT_SYMBOL] == ROW_COMMENT_SYMBOL: @@ -85,29 +87,29 @@ def lambda_handler(event, context): raise e none_business_day_list.append(non_date) if execute_date in none_business_day_list: - logging.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') + logger.info('I-02-05 本日は非営業日のため、チェック処理をスキップします') return else: - logging.info('I-02-06 本日は営業日のため、チェック処理を実施します') + logger.info('I-02-06 本日は営業日のため、チェック処理を実施します') except Exception as e: - logging.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') + logger.error(f'E-02-02 メルク社非営業日設定ファイルに不備があります エラー内容:{e}') raise NoneBusinessDayException('E-02-02', e) # ③ 設定ファイル[SAP_supI/Fファイルネーム設定ファイル(日次)]を読み込む try: - logging.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') + logger.info(f'I-03-01 日次I/Fファイルネーム設定ファイル読込 読込元:{CONFIG_BUCKET_NAME}/{RECEIVE_DAILY_FILE_NAME_LIST_PATH}') receive_daily_file_name_obj = s3_resource.Object(CONFIG_BUCKET_NAME, RECEIVE_DAILY_FILE_NAME_LIST_PATH) receive_daily_file_name_response = receive_daily_file_name_obj.get() - logging.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') + logger.info('I-03-02 日次I/Fファイルネーム設定ファイルを読み込みました') except Exception as e: - logging.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-03-01 日次I/Fファイルネーム設定ファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-03-01', e) # ④ 日次チェック処理を行う - logging.info('I-04-01 日次チェック処理開始') + logger.info('I-04-01 日次チェック処理開始') # 1.SAP保管用バケットの処理稼働日に該当するサブフォルダにあるファイル一覧を取得する - logging.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') + logger.info(f'I-04-02 オブジェクトリストの取得 取得先:{CHECK_BUCKET_NAME}/{execute_date}/') object_prefix = f'{execute_date}/' object_list = s3_resource.Bucket(CHECK_BUCKET_NAME).objects.filter(Prefix=object_prefix) file_list = [] @@ -116,8 +118,8 @@ def lambda_handler(event, context): file_list.append(obj_key[INDEX_LAST]) # 2.日次I/Fファイルチェック処理 - logging.info('I-04-03 日次I/Fファイルチェック処理開始') - logging.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') + logger.info('I-04-03 日次I/Fファイルチェック処理開始') + logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') @@ -130,57 +132,57 @@ def lambda_handler(event, context): break if file_exists == True: match_count += 1 - logging.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') + logger.info(f'I-04-05 日次I/Fファイルの受領を確認しました ファイル名:{file_name}') else: - logging.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') + logger.error(f'E-04-01 日次I/Fファイルに不足があります ファイル名:{row[INDEX_DATA_NAME]}') mail_msg += f'{MAIL_INDENT}{row[INDEX_DATA_NAME]}\n' if row_count == match_count: - logging.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') + logger.info('I-04-06 日次I/Fファイルは全て受領していることを確認しました') # ⑤ 「①」でメモリ保持しているメール挿入用文言に出力内容が存在するか確認する - logging.info('I-05-01 メール送信処理開始') + logger.info('I-05-01 メール送信処理開始') if len(mail_msg) > 0: # 1.存在した場合 - logging.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') + logger.info(f'I-05-02 {execute_date} 日次I/Fファイルに不足があるため、メール送信処理を開始します') try: - logging.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') + logger.info(f'I-05-03 通知メール(タイトル)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_TITLE_TEMPLATE_PATH}') mail_title_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_TITLE_TEMPLATE_PATH) mail_title = mail_title_obj['Body'].read().decode('utf-8') - logging.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') + logger.info('I-05-04 通知メール(タイトル)テンプレートファイルを読み込みました') except Exception as e: - logging.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-05-01 通知メール(タイトル)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-05-01', e) try: - logging.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') + logger.info(f'I-05-05 通知メール(本文)テンプレートファイル読込 読込元:{CONFIG_BUCKET_NAME}/{NOTICE_MAIL_BODY_TEMPLATE_PATH}') mail_body_obj = s3_client.get_object(Bucket=CONFIG_BUCKET_NAME, Key=NOTICE_MAIL_BODY_TEMPLATE_PATH) mail_body_response = mail_body_obj['Body'].read().decode('utf-8') mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg) - logging.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') + logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました') except Exception as e: - logging.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') + logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-05-02', e) - logging.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') + logger.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, 'Subject': mail_title, 'Message': mail_body } sns_client.publish(**params) - logging.info('I-05-08 メール送信指示をしました') + logger.info('I-05-08 メール送信指示をしました') else: # 2.存在しない場合 - logging.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') + logger.info(f'I-05-09 {execute_date} 日次I/Fファイルに不足がなかったため、メール送信処理をスキップします') # ⑥ 処理終了ログを出力する - logging.info('I-06-01 処理終了 SAP_supデータ受領チェック処理(日次)') + logger.info('I-06-01 処理終了 SAP_supデータ受領チェック処理(日次)') except CustomException as e: error_notice(e.id, e.arg) except Exception as e: - logging.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + logger.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') error_notice('E-99', e) return @@ -194,13 +196,13 @@ def error_notice(error_log_id, exception) -> None: 'Message': error_msg } sns_client.publish(**params) - logging.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') + logger.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: - logging.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + logger.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') return -class CustomException(Exception): +class CustomException(Exception, metaclass=ABCMeta): def __init__(self, id, arg): self.arg = arg self.id = id From 0d668c57cda14aec04475969c1e06a360e4154ec Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Thu, 26 May 2022 00:29:21 +0900 Subject: [PATCH 11/18] =?UTF-8?q?docs:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=82=B3=E3=83=A1=E3=83=B3?= =?UTF-8?q?=E3=83=88=E9=83=A8=E5=88=86=E3=82=92=E8=BF=BD=E8=A8=98=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 2 ++ ...mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index c175d15c..29c506fe 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -187,6 +187,7 @@ def lambda_handler(event, context): return +# 保守要員チーム通知 def error_notice(error_log_id, exception) -> None: try: error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' @@ -202,6 +203,7 @@ def error_notice(error_log_id, exception) -> None: return +# カスタムExceptionクラス class CustomException(Exception, metaclass=ABCMeta): def __init__(self, id, arg): self.arg = arg diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 524322ca..2ab4734e 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -187,6 +187,7 @@ def lambda_handler(event, context): return +# 保守要員チーム通知 def error_notice(error_log_id, exception) -> None: try: error_msg = f'{error_log_id} のエラーが発生しました。ご確認ください\n詳細:{exception}' @@ -202,6 +203,7 @@ def error_notice(error_log_id, exception) -> None: return +# カスタムExceptionクラス class CustomException(Exception, metaclass=ABCMeta): def __init__(self, id, arg): self.arg = arg From 2b684b45cfd356906a71ef4529001d3c89b16792 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Thu, 26 May 2022 13:35:02 +0900 Subject: [PATCH 12/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E6=9C=AA=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=A4=89=E6=95=B0=E3=81=8C=E3=81=82=E3=81=A3=E3=81=9F=E3=81=9F?= =?UTF-8?q?=E3=82=81=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 2 +- ...mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 29c506fe..45ffca4c 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -123,7 +123,7 @@ def lambda_handler(event, context): row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): + for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 2ab4734e..98ab2ceb 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -123,7 +123,7 @@ def lambda_handler(event, context): row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): + for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) From 08159dbd67e35d3fd911f330fba678c280c331f3 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 10:17:11 +0900 Subject: [PATCH 13/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=83=AD=E3=82=B0=E3=81=AE?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=A0=E3=82=BE=E3=83=BC=E3=83=B3=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...j-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 4 ++++ ...j-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 45ffca4c..191e7856 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -6,6 +6,7 @@ import re import csv import logging from abc import * +from zoneinfo import ZoneInfo # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -38,10 +39,13 @@ sns_client = boto3.client('sns') # logger設定 logger = logging.getLogger() +def custome_time(*arg): + return datetime.datetime.now(ZoneInfo("Asia/Tokyo")).timetuple() formatter = logging.Formatter( '[%(levelname)s]\t%(asctime)s\t%(message)s\n', '%Y-%m-%d %H:%M:%S' ) +formatter.converter = custome_time for handler in logger.handlers: handler.setFormatter(formatter) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 98ab2ceb..f34fc592 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -6,6 +6,7 @@ import re import csv import logging from abc import * +from zoneinfo import ZoneInfo # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -38,10 +39,13 @@ sns_client = boto3.client('sns') # logger設定 logger = logging.getLogger() +def custome_time(*arg): + return datetime.datetime.now(ZoneInfo("Asia/Tokyo")).timetuple() formatter = logging.Formatter( '[%(levelname)s]\t%(asctime)s\t%(message)s\n', '%Y-%m-%d %H:%M:%S' ) +formatter.converter = custome_time for handler in logger.handlers: handler.setFormatter(formatter) From 462043654fa2d3e731dd7853d4bd9761f5aefe67 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 10:57:28 +0900 Subject: [PATCH 14/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E3=83=AA=E3=82=B9=E3=83=88?= =?UTF-8?q?=E5=86=85=E5=8C=85=E8=A1=A8=E8=A8=98=E3=82=92=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=A8=E3=83=A1=E3=83=A2=E3=83=AA=E4=B8=8D?= =?UTF-8?q?=E8=B6=B3=E3=81=A3=E3=81=BD=E3=81=84=E5=8B=95=E3=81=8D=E3=82=92?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=81=AE=E3=81=A7=E5=88=A5=E3=81=AE=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 5 +++-- ...-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 191e7856..8a894c91 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -124,10 +124,11 @@ def lambda_handler(event, context): # 2.日次I/Fファイルチェック処理 logger.info('I-04-03 日次I/Fファイルチェック処理開始') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) + row_count = 0 match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): + for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): + row_count = i file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index f34fc592..2f43f12d 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -124,10 +124,11 @@ def lambda_handler(event, context): # 2.日次I/Fファイルチェック処理 logger.info('I-04-03 日次I/Fファイルチェック処理開始') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = sum(1 for line in open(io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8'))) + row_count = 0 match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): + for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): + row_count = i file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) From b589223bc7091728e0f4460acf063ece65f46b78 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 11:16:01 +0900 Subject: [PATCH 15/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E8=AA=BF=E6=9F=BB=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=81=A8=E3=81=93=E3=82=8D=E3=83=A1=E3=83=A2=E3=83=AA?= =?UTF-8?q?=E4=B8=8D=E8=B6=B3=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=8B=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E3=83=AA=E3=82=B9=E3=83=88=E5=86=85?= =?UTF-8?q?=E5=8C=85=E8=A1=A8=E8=A8=98=E3=82=92=E4=BD=BF=E7=94=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E6=88=BB=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ewdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 7 +++---- ...ewdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 8a894c91..77cac4b1 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -124,11 +124,10 @@ def lambda_handler(event, context): # 2.日次I/Fファイルチェック処理 logger.info('I-04-03 日次I/Fファイルチェック処理開始') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = 0 - match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): - row_count = i + match_count = 0 + row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read())) + for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 2f43f12d..429b6c31 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -124,11 +124,10 @@ def lambda_handler(event, context): # 2.日次I/Fファイルチェック処理 logger.info('I-04-03 日次I/Fファイルチェック処理開始') logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') - row_count = 0 - match_count = 0 receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') - for i, row in enumerate(csv.reader(receive_daily_file_name_body, delimiter='\t'), 1): - row_count = i + match_count = 0 + row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read())) + for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: match_result = re.fullmatch(row[INDEX_REGEX], file_name) From 6144d04382bccbf7def144dfd825d6fbbbb4d66b Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 13:38:32 +0900 Subject: [PATCH 16/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20response=E3=82=92read=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=A8=E8=A1=8C=E6=95=B0=E3=81=8C=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=8F=E3=81=AA=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=81=97=E3=81=BE=E3=81=86=E3=81=9F=E3=82=81=E3=80=81=E3=82=AA?= =?UTF-8?q?=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88=E3=81=8B=E3=82=89?= =?UTF-8?q?=E5=86=8D=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 2 +- ...mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index 77cac4b1..d736f3bc 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -126,7 +126,7 @@ def lambda_handler(event, context): logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') match_count = 0 - row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read())) + row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_obj.get()["Body"].read())) for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 429b6c31..3a19f94e 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -126,7 +126,7 @@ def lambda_handler(event, context): logger.info('I-04-04 取得したオブジェクトリストと日次I/Fファイルネーム設定ファイルの突き合わせを開始します') receive_daily_file_name_body = io.TextIOWrapper(io.BytesIO(receive_daily_file_name_response["Body"].read()), encoding='utf-8') match_count = 0 - row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_response["Body"].read())) + row_count = sum(1 for line in io.BytesIO(receive_daily_file_name_obj.get()["Body"].read())) for row in csv.reader(receive_daily_file_name_body, delimiter='\t'): file_exists = False for file_name in file_list: From f6d46de57769fd0e7d2da5c56ad348bffec8cd75 Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 14:07:49 +0900 Subject: [PATCH 17/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20Subject=E3=81=8B=E3=82=89?= =?UTF-8?q?=E6=94=B9=E8=A1=8C=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 2 +- ...mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index d736f3bc..dd769643 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -172,7 +172,7 @@ def lambda_handler(event, context): logger.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, - 'Subject': mail_title, + 'Subject': mail_title.rstrip('\n'), 'Message': mail_body } sns_client.publish(**params) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 3a19f94e..3ead95e9 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -172,7 +172,7 @@ def lambda_handler(event, context): logger.info(f'I-05-07 メール送信指示をします 送信先トピック:{MBJ_SAP_NOTICE_TOPIC}') params = { 'TopicArn': MBJ_SAP_NOTICE_TOPIC, - 'Subject': mail_title, + 'Subject': mail_title.rstrip('\n'), 'Message': mail_body } sns_client.publish(**params) From f5b6da00329d6ff5e5ff3396a1bd4ef202cca66a Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Mon, 30 May 2022 15:20:17 +0900 Subject: [PATCH 18/18] =?UTF-8?q?fix:SAP=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=97=A5=E6=AC=A1=E5=8F=97=E9=A0=98=E3=83=81=E3=82=A7=E3=83=83?= =?UTF-8?q?=E3=82=AF=E5=87=A6=E7=90=86=20=E8=A9=B3=E7=B4=B0=E3=81=AA?= =?UTF-8?q?=E3=83=88=E3=83=AC=E3=83=BC=E3=82=B9=E3=83=90=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=81=8C=E5=87=BA=E5=8A=9B=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=9F=E3=82=81=E3=80=81?= =?UTF-8?q?=E5=87=BA=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...j-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py | 4 ++++ ...j-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py index dd769643..27057ff4 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-fin-receive-check-daily.py @@ -7,6 +7,7 @@ import csv import logging from abc import * from zoneinfo import ZoneInfo +import traceback # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -184,9 +185,11 @@ def lambda_handler(event, context): # ⑥ 処理終了ログを出力する logger.info('I-06-01 処理終了 SAP_finデータ受領チェック処理(日次)') except CustomException as e: + traceback.print_exc() error_notice(e.id, e.arg) except Exception as e: logger.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + traceback.print_exc() error_notice('E-99', e) return @@ -204,6 +207,7 @@ def error_notice(error_log_id, exception) -> None: logger.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: logger.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + traceback.print_exc() return diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py index 3ead95e9..6dbe7624 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-sup-receive-check-daily.py @@ -7,6 +7,7 @@ import csv import logging from abc import * from zoneinfo import ZoneInfo +import traceback # 環境変数 CHECK_BUCKET_NAME = os.environ["CHECK_BUCKET_NAME"] @@ -184,9 +185,11 @@ def lambda_handler(event, context): # ⑥ 処理終了ログを出力する logger.info('I-06-01 処理終了 SAP_supデータ受領チェック処理(日次)') except CustomException as e: + traceback.print_exc() error_notice(e.id, e.arg) except Exception as e: logger.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') + traceback.print_exc() error_notice('E-99', e) return @@ -204,6 +207,7 @@ def error_notice(error_log_id, exception) -> None: logger.error(f'E-ERR-01 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: logger.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') + traceback.print_exc() return