From 256d7941878484de4ddbb7d715bd4f0c7ead917e Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Fri, 21 Jan 2022 15:03:47 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E4=BA=8C=E9=87=8D=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=8C=E7=99=BA=E7=94=9F=E3=81=97=E3=81=9F=E6=99=82=E3=81=AE?= =?UTF-8?q?=E5=8B=95=E4=BD=9C=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 --- ecs/Dockerfile/dataimport/error.py | 41 ++++++++++++++++++++++++++++++ ecs/Dockerfile/dataimport/ini.py | 3 ++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ecs/Dockerfile/dataimport/error.py b/ecs/Dockerfile/dataimport/error.py index 3fc33ea6..c12ff8e1 100644 --- a/ecs/Dockerfile/dataimport/error.py +++ b/ecs/Dockerfile/dataimport/error.py @@ -59,3 +59,44 @@ def error(bucket_name, target_data_source, target_file_name, log_info): # ⑥ 処理を終了する sys.exit() + +def error_doing_file_exists(bucket_name, target_key, target_data_source, target_file_name, log_info): + """.doingファイルが存在した時のエラー処理 + Args: + bucket_name : バケット名 + target_key : 投入データのフルパス + target_data_source : 投入データのディレクトリ名よりデータソースに該当する部分 + target_file_name : 投入データのファイル名 + log_info : ログに記載するデータソース名とファイル名 + """ + + try: + # ① エラー処理開始ログを出力する + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-06 - doingファイルが存在した時のエラー処理を開始します') + + # ② 投入データファイルをS3バケット内のtargetディレクトリから、以下ファイル名でerrorディレクトリに移動(コピー削除)する + copy_source = { + 'Bucket': bucket_name, + 'Key': target_key + } + error_file_name = f'{datetime.now():%Y%m%d%H%M%S}_{target_file_name}' + error_key = target_data_source + DIRECTORY_ERROR + error_file_name + error_obj = s3_resource.Object(bucket_name, error_key) + error_obj.copy(copy_source) + s3_client.delete_object(Bucket=bucket_name, Key=target_key) + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}') + + # ③ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する + result_error_file_name = target_file_name + '.error' + result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name + result_error_obj = s3_resource.Object(bucket_name, result_error_key) + result_error_obj.put(Body='') + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-08 - targetディレクトリに {result_error_file_name} を作成しました') + except Exception as e: + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-ERR-99 - エラー内容:{e}') + finally: + # ④ 終了処理終了ログを出力する + print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-09 - doingファイルが存在した時のエラー処理を終了します') + + # ⑤ 処理を終了する + sys.exit() \ No newline at end of file diff --git a/ecs/Dockerfile/dataimport/ini.py b/ecs/Dockerfile/dataimport/ini.py index 60674688..30d2ef93 100644 --- a/ecs/Dockerfile/dataimport/ini.py +++ b/ecs/Dockerfile/dataimport/ini.py @@ -5,6 +5,7 @@ import csv import re import sys from error import error +from error import error_doing_file_exists from common import debug_log # 定数 @@ -53,7 +54,7 @@ def init(bucket_name, target_key, target_data_source, target_file_name, log_info print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-02 - doingファイル:{doing_file_name} の存在チェック') s3_client.head_object(Bucket=bucket_name, Key=doing_key) print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["e"]} E-INI-01 - 投入データ {target_file_name} は既に処理中です') - sys.exit() + error_doing_file_exists(bucket_name, target_key, target_data_source, target_file_name, log_info) except Exception as e: print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-INI-03 - doingファイルは存在しませんでした') From fdb06f9af6aa071c1996446728ee8166cc48200e Mon Sep 17 00:00:00 2001 From: *lcOeIaePm0 Date: Fri, 21 Jan 2022 16:38:34 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=E4=BA=8C=E9=87=8D=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E6=99=82=E3=81=AF.error=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=8F=E3=80=81.exclusive=5Ferror?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E4=BD=9C=E6=88=90?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/Dockerfile/dataimport/error.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ecs/Dockerfile/dataimport/error.py b/ecs/Dockerfile/dataimport/error.py index c12ff8e1..c81eca65 100644 --- a/ecs/Dockerfile/dataimport/error.py +++ b/ecs/Dockerfile/dataimport/error.py @@ -86,8 +86,8 @@ def error_doing_file_exists(bucket_name, target_key, target_data_source, target_ s3_client.delete_object(Bucket=bucket_name, Key=target_key) print(f'{datetime.now():%Y-%m-%d %H:%M:%S} {log_info} {LOG_LEVEL["i"]} I-ERR-07 - targetディレクトリの {target_file_name} をerrorディレクトリに移動しました 移動後ファイル名:{error_file_name}') - # ③ S3バケット内のtargetディレクトリに、「投入データファイル名.error」ファイルを作成する - result_error_file_name = target_file_name + '.error' + # ③ S3バケット内のtargetディレクトリに、「投入データファイル名.exclusive_error」ファイルを作成する + result_error_file_name = target_file_name + '.exclusive_error' result_error_key = target_data_source + DIRECTORY_TARGET + result_error_file_name result_error_obj = s3_resource.Object(bucket_name, result_error_key) result_error_obj.put(Body='')