Merge branch 'develop' into feature-NEWDWH2021-731-synch-develop
This commit is contained in:
commit
9342674c6c
11
.gitignore
vendored
11
.gitignore
vendored
@ -1,9 +1,10 @@
|
|||||||
lambda/mbj-newdwh2021-staging-NoticeToSlack/package-lock.json
|
# Node.jsで実装されたLambdaの管理対象外ファイル群
|
||||||
lambda/mbj-newdwh2021-staging-NoticeToSlack/node_modules/*
|
package-lock.json
|
||||||
lambda/mbj-newdwh2021-staging-PublishFromLog/package-lock.json
|
node_modules/
|
||||||
lambda/mbj-newdwh2021-staging-PublishFromLog/node_modules/*
|
# ローカル確認用環境変数ファイル
|
||||||
__pycache__/
|
|
||||||
.env
|
.env
|
||||||
|
# pythonのキャッシュファイル
|
||||||
|
__pycache__/
|
||||||
**/.vscode/settings.json
|
**/.vscode/settings.json
|
||||||
|
|
||||||
# python test
|
# python test
|
||||||
|
|||||||
@ -4,7 +4,12 @@ ENV TZ="Asia/Tokyo"
|
|||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
COPY requirements.txt ./
|
COPY requirements.txt ./
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN \
|
||||||
|
apt update -y && \
|
||||||
|
# パッケージのセキュリティアップデートのみを適用するコマンド
|
||||||
|
apt install -y unattended-upgrades && \
|
||||||
|
unattended-upgrades && \
|
||||||
|
pip install --no-cache-dir -r requirements.txt
|
||||||
COPY dataimport ./
|
COPY dataimport ./
|
||||||
|
|
||||||
CMD [ "python", "./controller.py" ]
|
CMD [ "python", "./controller.py" ]
|
||||||
|
|||||||
@ -1,11 +1,13 @@
|
|||||||
from datetime import datetime
|
|
||||||
import boto3
|
|
||||||
import io
|
|
||||||
import csv
|
import csv
|
||||||
|
import io
|
||||||
import sys
|
import sys
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
import boto3
|
||||||
|
|
||||||
|
from common import convert_quotechar, debug_log
|
||||||
from end import end
|
from end import end
|
||||||
from error import error
|
from error import error
|
||||||
from common import debug_log
|
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
DIRECTORY_WORK = '/work/'
|
DIRECTORY_WORK = '/work/'
|
||||||
@ -23,6 +25,14 @@ SETTINGS_ITEM = {
|
|||||||
'storageSchemaName': 9,
|
'storageSchemaName': 9,
|
||||||
'loadSchemaName': 10,
|
'loadSchemaName': 10,
|
||||||
'exSqlFileName': 11,
|
'exSqlFileName': 11,
|
||||||
|
'commaReplaceColumns': 12,
|
||||||
|
'importManner': 13,
|
||||||
|
'reserved1': 14,
|
||||||
|
'reserved2': 15,
|
||||||
|
'reserved3': 16,
|
||||||
|
'reserved4': 17,
|
||||||
|
'reserved5': 18,
|
||||||
|
'reserved6': 19
|
||||||
}
|
}
|
||||||
LINE_FEED_CODE = {
|
LINE_FEED_CODE = {
|
||||||
'CR': '\r',
|
'CR': '\r',
|
||||||
@ -74,14 +84,18 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
work_obj = s3_resource.Object(bucket_name, work_key)
|
work_obj = s3_resource.Object(bucket_name, work_key)
|
||||||
work_response = work_obj.get()
|
work_response = work_obj.get()
|
||||||
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
work_data = io.TextIOWrapper(io.BytesIO(work_response["Body"].read()), encoding=settings_list[SETTINGS_ITEM["charCode"]], newline=LINE_FEED_CODE[settings_list[SETTINGS_ITEM["lineFeedCode"]]])
|
||||||
work_header_list = []
|
work_csv_row = []
|
||||||
for line in csv.reader(work_data, quotechar=settings_list[SETTINGS_ITEM["quotechar"]], delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
|
for i, line in enumerate(csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]])):
|
||||||
work_header_list = line
|
# ヘッダあり、かつ、1行目の場合
|
||||||
|
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == 1 and i == 0:
|
||||||
|
work_csv_row.append(line)
|
||||||
|
continue
|
||||||
|
work_csv_row.append(line)
|
||||||
break
|
break
|
||||||
|
|
||||||
# ② C-0のデータ件数チェックを開始する
|
# ② C-0のデータ件数チェックを開始する
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-02 - C-0のチェックを開始します')
|
||||||
if not len(work_header_list):
|
if is_empty_file(work_csv_row, settings_list):
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-03 - 投入ファイルが0バイトのため処理を終了します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-03 - 投入ファイルが0バイトのため処理を終了します')
|
||||||
end(bucket_name, target_data_source, target_file_name, '', log_info, mode)
|
end(bucket_name, target_data_source, target_file_name, '', log_info, mode)
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-04 - 終了処理完了')
|
||||||
@ -90,16 +104,17 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
|
|
||||||
# ③ C-1の項目数チェックを開始する
|
# ③ C-1の項目数チェックを開始する
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-06 - C-1のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-06 - C-1のチェックを開始します')
|
||||||
work_header_list_len = len(work_header_list)
|
work_csv_row_item_len = len(work_csv_row[0])
|
||||||
if work_header_list_len == int(settings_list[SETTINGS_ITEM["csvNumItems"]]):
|
if work_csv_row_item_len == int(settings_list[SETTINGS_ITEM["csvNumItems"]]):
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-07 - C-1:正常終了')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-07 - C-1:正常終了')
|
||||||
else:
|
else:
|
||||||
raise CheckError(f'E-CHK-01 - 項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{work_header_list_len}')
|
raise CheckError(f'E-CHK-01 - 項目数が一致しません 個別設定ファイル項目数:{settings_list[SETTINGS_ITEM["csvNumItems"]]} 投入データ項目数:{work_csv_row_item_len}')
|
||||||
|
|
||||||
# ④ C-2の項目並び順チェック開始する
|
# ④ C-2の項目並び順チェック開始する
|
||||||
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True:
|
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-08 - C-2のチェックを開始します')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-CHK-08 - C-2のチェックを開始します')
|
||||||
settings_header_list = settings_list[SETTINGS_ITEM["csvNameItems"]].rstrip().split(',')
|
settings_header_list = settings_list[SETTINGS_ITEM["csvNameItems"]].rstrip().split(',')
|
||||||
|
work_header_list = work_csv_row[0]
|
||||||
for i in range(len(settings_header_list)):
|
for i in range(len(settings_header_list)):
|
||||||
if not settings_header_list[i] == work_header_list[i]:
|
if not settings_header_list[i] == work_header_list[i]:
|
||||||
raise CheckError(f'E-CHK-02 - 項目順序が一致しません {i + 1}番目の項目 個別設定ファイル項目:{settings_header_list[i]} 投入データ項目:{work_header_list[i]}')
|
raise CheckError(f'E-CHK-02 - 項目順序が一致しません {i + 1}番目の項目 個別設定ファイル項目:{settings_header_list[i]} 投入データ項目:{work_header_list[i]}')
|
||||||
@ -114,3 +129,22 @@ def check(bucket_name, target_data_source, target_file_name, settings_key, log_i
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-CHK-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-CHK-99 - エラー内容:{e}')
|
||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
|
|
||||||
|
def is_empty_file(work_csv_row: list, settings_list: list):
|
||||||
|
"""② C-0のデータ件数チェック
|
||||||
|
ヘッダ行がある場合は、1行目を読み飛ばして判定する
|
||||||
|
|
||||||
|
Args:
|
||||||
|
work_csv_row (list): CSVファイルの1行目(ヘッダを含む場合は2行目まで)
|
||||||
|
settings_list (list): 個別設定ファイルのリスト
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: CSVファイルの1行目が0件だった場合はTrue
|
||||||
|
"""
|
||||||
|
has_header = int(settings_list[SETTINGS_ITEM["headerFlag"]]) == 1
|
||||||
|
# ヘッダのみのファイルも0バイトファイルをみなす
|
||||||
|
if has_header:
|
||||||
|
return len(work_csv_row[1:]) == 0
|
||||||
|
|
||||||
|
return len(work_csv_row) == 0
|
||||||
|
|||||||
@ -11,3 +11,18 @@ MODE_TYPE = {
|
|||||||
def debug_log(log, log_info, mode):
|
def debug_log(log, log_info, mode):
|
||||||
if MODE_TYPE['d'] == mode:
|
if MODE_TYPE['d'] == mode:
|
||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["d"]} {log}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["d"]} {log}')
|
||||||
|
|
||||||
|
def convert_quotechar(quotechar):
|
||||||
|
"""csvモジュールの囲い文字を変換する
|
||||||
|
|
||||||
|
Args:
|
||||||
|
quotechar : 項目囲い文字の設定値
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
空文字、空白文字の場合→None
|
||||||
|
それ以外→設定値をそのまま帰す
|
||||||
|
"""
|
||||||
|
if (quotechar.strip(' ') == ''):
|
||||||
|
return None
|
||||||
|
|
||||||
|
return quotechar
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
|
import csv
|
||||||
|
import io
|
||||||
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
import boto3
|
import boto3
|
||||||
import pymysql
|
import pymysql
|
||||||
from pymysql.constants import CLIENT
|
from pymysql.constants import CLIENT
|
||||||
import io
|
|
||||||
import csv
|
from common import convert_quotechar, debug_log
|
||||||
from error import error
|
from error import error
|
||||||
from common import debug_log
|
|
||||||
|
|
||||||
# 定数
|
# 定数
|
||||||
DIRECTORY_WORK = '/work/'
|
DIRECTORY_WORK = '/work/'
|
||||||
@ -23,7 +26,7 @@ SETTINGS_ITEM = {
|
|||||||
'storageSchemaName': 9,
|
'storageSchemaName': 9,
|
||||||
'loadSchemaName': 10,
|
'loadSchemaName': 10,
|
||||||
'exSqlFileName': 11,
|
'exSqlFileName': 11,
|
||||||
'reserved0': 12,
|
'commaReplaceColumns': 12,
|
||||||
'importManner': 13,
|
'importManner': 13,
|
||||||
'reserved1': 14,
|
'reserved1': 14,
|
||||||
'reserved2': 15,
|
'reserved2': 15,
|
||||||
@ -94,7 +97,7 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
|
for line in io.TextIOWrapper(io.BytesIO(settings_response["Body"].read()), encoding='utf-8'):
|
||||||
settings_list.append(line.rstrip('\n'))
|
settings_list.append(line.rstrip('\n'))
|
||||||
|
|
||||||
# 予約行挿入のためsetting_listとSETTINGS_ITEMの要素数を揃える
|
# 設定ファイルに記載のない行を空文字として扱い、予約行とする
|
||||||
for _ in range(len(SETTINGS_ITEM) - len(settings_list)):
|
for _ in range(len(SETTINGS_ITEM) - len(settings_list)):
|
||||||
settings_list.append('')
|
settings_list.append('')
|
||||||
|
|
||||||
@ -117,8 +120,9 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
warning_info = '' # ワーニング情報
|
warning_info = '' # ワーニング情報
|
||||||
index = 0 # ループインデックス
|
index = 0 # ループインデックス
|
||||||
settings_db_columu_list = settings_list[SETTINGS_ITEM["dbColumuName"]].rstrip().split(',')
|
settings_db_columu_list = settings_list[SETTINGS_ITEM["dbColumuName"]].rstrip().split(',')
|
||||||
|
settings_replace_comma_list = settings_list[SETTINGS_ITEM["commaReplaceColumns"]].rstrip().split(',')
|
||||||
|
|
||||||
for line in csv.reader(work_data, quotechar=settings_list[SETTINGS_ITEM["quotechar"]], delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
|
for line in csv.reader(work_data, quotechar=convert_quotechar(settings_list[SETTINGS_ITEM["quotechar"]]), delimiter=settings_list[SETTINGS_ITEM["delimiter"]]):
|
||||||
try:
|
try:
|
||||||
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True and index == 0:
|
if int(settings_list[SETTINGS_ITEM["headerFlag"]]) == True and index == 0:
|
||||||
index += 1
|
index += 1
|
||||||
@ -131,8 +135,8 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
# SQL文生成
|
# SQL文生成
|
||||||
query_parameter_list = []
|
query_parameter_list = []
|
||||||
sql = f'INSERT INTO {settings_list[SETTINGS_ITEM["loadSchemaName"]]} ('
|
sql = f'INSERT INTO {settings_list[SETTINGS_ITEM["loadSchemaName"]]} ('
|
||||||
for i in range(len(settings_db_columu_list)):
|
for db_column in settings_db_columu_list:
|
||||||
sql = f'{sql} {settings_db_columu_list[i]},'
|
sql = f'{sql} {db_column},'
|
||||||
sql = f'{sql} file_name,' # システム項目:取込ファイル名
|
sql = f'{sql} file_name,' # システム項目:取込ファイル名
|
||||||
sql = f'{sql} file_row_cnt,' # システム項目:取込ファイル行番号
|
sql = f'{sql} file_row_cnt,' # システム項目:取込ファイル行番号
|
||||||
sql = f'{sql} delete_flg,' # システム項目:論理削除フラグ
|
sql = f'{sql} delete_flg,' # システム項目:論理削除フラグ
|
||||||
@ -143,14 +147,18 @@ def main(bucket_name, target_data_source, target_file_name, settings_key, db_inf
|
|||||||
sql = f'{sql} VALUES ('
|
sql = f'{sql} VALUES ('
|
||||||
for i in range(len(line)):
|
for i in range(len(line)):
|
||||||
# データ項目値が0桁より大きいかチェックする
|
# データ項目値が0桁より大きいかチェックする
|
||||||
if len(line[i]) > 0:
|
if len(line[i]) == 0:
|
||||||
# 0桁より大きい場合
|
# 0桁の場合
|
||||||
# INSERT文のパラメータとそれに対応するプレースホルダーを設定する
|
|
||||||
query_parameter_list.append(line[i])
|
|
||||||
sql = f'{sql} %s,'
|
|
||||||
else:
|
|
||||||
# 上記以外の場合
|
|
||||||
sql = f'{sql} NULL,'
|
sql = f'{sql} NULL,'
|
||||||
|
continue
|
||||||
|
|
||||||
|
# データ項目値の変換処理(カンマ除去)
|
||||||
|
org_column_value = line[i]
|
||||||
|
current_settings_db_column_name = settings_db_columu_list[i]
|
||||||
|
column_value = convert_column_value(org_column_value, current_settings_db_column_name, settings_replace_comma_list)
|
||||||
|
# INSERT文のパラメータとそれに対応するプレースホルダーを設定する
|
||||||
|
query_parameter_list.append(column_value)
|
||||||
|
sql = f'{sql} %s,'
|
||||||
sql = f'{sql} "{target_file_name}",' # システム項目:取込ファイル名
|
sql = f'{sql} "{target_file_name}",' # システム項目:取込ファイル名
|
||||||
sql = f'{sql} "{index + 1}",' # システム項目:取込ファイル行番号
|
sql = f'{sql} "{index + 1}",' # システム項目:取込ファイル行番号
|
||||||
sql = f'{sql} "0",' # システム項目:論理削除フラグ
|
sql = f'{sql} "0",' # システム項目:論理削除フラグ
|
||||||
@ -304,6 +312,24 @@ def connection_close(conn, bucket_name, target_data_source, target_file_name, lo
|
|||||||
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-MAIN-99 - エラー内容:{e}')
|
print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-MAIN-99 - エラー内容:{e}')
|
||||||
error(bucket_name, target_data_source, target_file_name, log_info)
|
error(bucket_name, target_data_source, target_file_name, log_info)
|
||||||
|
|
||||||
|
def convert_column_value(org_column_value, current_settings_db_column_name, settings_replace_comma_list):
|
||||||
|
"""データ項目値変換処理
|
||||||
|
- 数値内のカンマ除去処理
|
||||||
|
Args:
|
||||||
|
org_column_value : 投入データの値
|
||||||
|
current_settings_db_column_name : 投入データのDBカラム物理名
|
||||||
|
settings_replace_comma_list : 投入データの数値型のDBカラム物理名のリスト
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
converted_column_value:変換処理を行った投入データの値
|
||||||
|
"""
|
||||||
|
# 投入データのDB物理カラム名が設定ファイルの数値型のDBカラム物理名に含まれている場合、データ項目値の「,」を取り除く
|
||||||
|
converted_column_value = org_column_value
|
||||||
|
if current_settings_db_column_name in settings_replace_comma_list:
|
||||||
|
converted_column_value = converted_column_value.replace(',', '')
|
||||||
|
|
||||||
|
return converted_column_value
|
||||||
|
|
||||||
|
|
||||||
def truncate_judge(settings_list):
|
def truncate_judge(settings_list):
|
||||||
"""TRUNCATE処理対応判定
|
"""TRUNCATE処理対応判定
|
||||||
|
|||||||
@ -4,7 +4,12 @@ ENV TZ="Asia/Tokyo"
|
|||||||
|
|
||||||
WORKDIR /function
|
WORKDIR /function
|
||||||
COPY requirements.txt ./
|
COPY requirements.txt ./
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN \
|
||||||
|
apt update -y && \
|
||||||
|
# パッケージのセキュリティアップデートのみを適用するコマンド
|
||||||
|
apt install -y unattended-upgrades && \
|
||||||
|
unattended-upgrades && \
|
||||||
|
pip install --no-cache-dir -r requirements.txt
|
||||||
COPY datadecrypt ./
|
COPY datadecrypt ./
|
||||||
|
|
||||||
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
|
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
|
||||||
|
|||||||
@ -15,7 +15,6 @@ RECEIVE_MONTHLY_FILE_NAME_LIST_PATH = os.environ["RECEIVE_MONTHLY_FILE_NAME_LIST
|
|||||||
NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_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"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -112,7 +111,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -159,6 +159,22 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
def __init__(self, id, arg):
|
def __init__(self, id, arg):
|
||||||
|
|||||||
@ -17,7 +17,6 @@ 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_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_PATH"]
|
||||||
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -164,7 +163,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -210,6 +210,22 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
|
|||||||
@ -17,7 +17,6 @@ MONTHLY_CEHCK_DAY_LIST_PATH = os.environ["MONTHLY_CEHCK_DAY_LIST_PATH"]
|
|||||||
NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_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"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -166,7 +165,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -213,6 +213,23 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
def __init__(self, id, arg):
|
def __init__(self, id, arg):
|
||||||
|
|||||||
@ -15,7 +15,6 @@ RECEIVE_MONTHLY_FILE_NAME_LIST_PATH = os.environ["RECEIVE_MONTHLY_FILE_NAME_LIST
|
|||||||
NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_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"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -112,7 +111,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -159,6 +159,22 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
def __init__(self, id, arg):
|
def __init__(self, id, arg):
|
||||||
|
|||||||
@ -17,7 +17,6 @@ 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_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_PATH"]
|
||||||
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -164,7 +163,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -210,6 +210,22 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
|
|||||||
@ -17,7 +17,6 @@ MONTHLY_CEHCK_DAY_LIST_PATH = os.environ["MONTHLY_CEHCK_DAY_LIST_PATH"]
|
|||||||
NOTICE_MAIL_TITLE_TEMPLATE_PATH = os.environ["NOTICE_MAIL_TITLE_TEMPLATE_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"]
|
NOTICE_MAIL_BODY_TEMPLATE_PATH = os.environ["NOTICE_MAIL_BODY_TEMPLATE_PATH"]
|
||||||
MBJ_SAP_NOTICE_TOPIC = os.environ["MBJ_SAP_NOTICE_TOPIC"]
|
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_TOPIC = os.environ["NDS_NOTICE_TOPIC"]
|
||||||
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
NDS_NOTICE_TITLE = os.environ["NDS_NOTICE_TITLE"]
|
||||||
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
LOG_LEVEL = os.environ["LOG_LEVEL"]
|
||||||
@ -166,7 +165,8 @@ def lambda_handler(event, context):
|
|||||||
logger.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_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_response = mail_body_obj['Body'].read().decode('utf-8')
|
||||||
mail_body = mail_body_response.replace(MAIL_BODY_REPLACE_SYMBOL, mail_msg)
|
# メール本文内のプレースホルダーを置き換える
|
||||||
|
mail_body = substitute_mail_body(mail_body_response, mail_msg)
|
||||||
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
logger.info('I-05-06 通知メール(本文)テンプレートファイルを読み込みました')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
logger.error(f'E-05-02 通知メール(本文)テンプレートファイルの読み込みに失敗しました エラー内容:{e}')
|
||||||
@ -213,6 +213,23 @@ def error_notice(error_log_id, exception) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def substitute_mail_body(before_mail_body:str, mail_msg: str) -> str:
|
||||||
|
"""メール本文のプレースホルダーを置き換えます
|
||||||
|
|
||||||
|
Args:
|
||||||
|
before_mail_body (str): 置き換え前のメール本文
|
||||||
|
mail_msg (str): メール本文のプレースホルダーを置き換える文言
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 置き換え後のメール本文
|
||||||
|
"""
|
||||||
|
substitute_dict = {
|
||||||
|
"notice_file_names": mail_msg
|
||||||
|
}
|
||||||
|
mail_body = before_mail_body.format_map(substitute_dict)
|
||||||
|
return mail_body
|
||||||
|
|
||||||
|
|
||||||
# カスタムExceptionクラス
|
# カスタムExceptionクラス
|
||||||
class CustomException(Exception, metaclass=ABCMeta):
|
class CustomException(Exception, metaclass=ABCMeta):
|
||||||
def __init__(self, id, arg):
|
def __init__(self, id, arg):
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。
|
SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
尚、本メールはシステム自動送信のため、返信は出来ません。
|
尚、本メールはシステム自動送信のため、返信は出来ません。
|
||||||
本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。
|
本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP日次I/Fである以下のファイルを受領できておりません。
|
SAP日次I/Fである以下のファイルを受領できておりません。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP月次I/Fである以下のファイルを受領できておりません。
|
SAP月次I/Fである以下のファイルを受領できておりません。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。
|
SAP月次I/Fである以下のファイルを受領しましたので、通知いたします。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
尚、本メールはシステム自動送信のため、返信は出来ません。
|
尚、本メールはシステム自動送信のため、返信は出来ません。
|
||||||
本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。
|
本件に関する問い合わせは、IT部門 ゴザリ様にお願いいたします。
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP日次I/Fである以下のファイルを受領できておりません。
|
SAP日次I/Fである以下のファイルを受領できておりません。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
宛先各位
|
宛先各位
|
||||||
SAP月次I/Fである以下のファイルを受領できておりません。
|
SAP月次I/Fである以下のファイルを受領できておりません。
|
||||||
@pgm_str_01@
|
{notice_file_names}
|
||||||
|
|
||||||
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
SAPシステム側のSFTP送信状況のご確認をお願いいたします。
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user