From 3ceb9fbb780b82e29eb95695ab4defa04a1ad82b Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 21 Jun 2022 18:53:05 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E5=8F=96=E3=82=8A=E8=BE=BC=E3=81=BF=E3=83=90=E3=82=B1=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=81=AB=E5=BE=A9=E5=8F=B7=E5=8C=96=E6=B8=88=E3=81=BF?= =?UTF-8?q?=E3=81=AE=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E3=81=99=E3=82=8B=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 +++++- .../datadecrypt/main.py | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e4f6d9fb..0be1cd1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ lambda/mbj-newdwh2021-staging-NoticeToSlack/package-lock.json lambda/mbj-newdwh2021-staging-NoticeToSlack/node_modules/* lambda/mbj-newdwh2021-staging-PublishFromLog/package-lock.json -lambda/mbj-newdwh2021-staging-PublishFromLog/node_modules/* \ No newline at end of file +lambda/mbj-newdwh2021-staging-PublishFromLog/node_modules/* + +# Pythonの仮想環境 +.venv +__pycache__ diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py index ec4d24ae..344e2641 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py @@ -144,7 +144,21 @@ def handler(event, context): except Exception as e: logger.error(f'E-07-02 PGP暗号化ファイルのS3出力に失敗しました エラー内容:{e}') raise FileOutputException('E-07-02', EXTENSION_ERROR, e) - + # 「⑥」で復号化したファイルをデータ取込用バケットに出力する + try: + copy_source = { + 'Bucket': decrypt_bucket_name, + 'Key': decrypt_file_key + } + import_file_folder = f'{s3_event.data_source_name}{DIRECTORY_TARGET}' + import_file_key = f'{import_file_folder}{decrypt_file_name}' + logger.info(f'I-07-06 復号化ファイル出力 ファイル名:{decrypt_file_name} 出力先:{import_file_folder}') + import_file_obj = s3_resource.Object(s3_event.bucket_name, import_file_key) + import_file_obj.copy(copy_source) + logger.info(f'I-07-07 復号化ファイルをS3に出力しました') + except Exception as e: + logger.error(f'E-07-03 復号化ファイルのS3出力に失敗しました エラー内容:{e}') + raise FileOutputException('E-07-02', EXTENSION_ERROR, e) # ⑧ 処理終了ログを出力する logger.info('I-08-01 処理終了 SAPデータ復号処理') except EncryptFileReadException as e: From 0021e8b2d712f24fe28a24b79f97f4e0b49cb935 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 21 Jun 2022 18:59:07 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E5=AE=9A=E6=95=B0=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=E6=BC=8F=E3=82=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datadecrypt/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py index 344e2641..1c0eee70 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py @@ -23,6 +23,7 @@ LOG_LEVEL = os.environ["LOG_LEVEL"] # 定数 DIRECTORY_RECV = '/recv/' DIRECTORY_RECV_ERROR = '/recv_error/' +DIRECTORY_TARGET = '/target/' EXTENSION_ERROR = '.error' EXTENSION_DECRYPT_ERROR = '.decrypt_error' INDEX_EXTENSION_DELETE_NUM = -4 From 3cc6b93c229491be74119a6fae23be81ca480996 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Tue, 21 Jun 2022 19:07:42 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20traceback=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=82=8F=E3=81=9A=E3=81=AB=E3=80=81logger.exception=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E3=81=86=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit traceback.print_exc()で取得しているものと、logger.exception()で取得しているものがどちらともsys.exc_infoなので、同じ動きをするはず。 --- .../datadecrypt/main.py | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py index 1c0eee70..49eb8db0 100644 --- a/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py +++ b/lambda/mbj-newdwh2021-staging-lambda-sap-data-decrypt/datadecrypt/main.py @@ -6,7 +6,6 @@ import datetime import logging from abc import * from zoneinfo import ZoneInfo -import traceback # 環境変数 SECRET_KEY_FILE_BUCKET_NAME = os.environ["SECRET_KEY_FILE_BUCKET_NAME"] @@ -79,7 +78,7 @@ def handler(event, context): s3_client.download_file(s3_event.bucket_name, s3_event.file_path, PATH_TEMP_ENCRYPT_FILE) logger.info('I-03-02 PGP暗号化ファイルを読み込みました') except Exception as e: - logger.error(f'E-03-01 PGP暗号化ファイルの読み込みに失敗しました エラー内容:{e}') + logger.exception(f'E-03-01 PGP暗号化ファイルの読み込みに失敗しました エラー内容:{e}') raise EncryptFileReadException('E-03-01', EXTENSION_ERROR, e) # ④ S3から秘密鍵ファイルを読み込む @@ -88,7 +87,7 @@ def handler(event, context): s3_client.download_file(SECRET_KEY_FILE_BUCKET_NAME, SECRET_KEY_FILE_PATH, PATH_TEMP_PRIVATE_KEY) logger.info('I-04-02 秘密鍵ファイルを読み込みました') except Exception as e: - logger.error(f'E-04-01 秘密鍵ファイルの読み込みに失敗しました エラー内容:{e}') + logger.exception(f'E-04-01 秘密鍵ファイルの読み込みに失敗しました エラー内容:{e}') raise FileReadException('E-04-01', EXTENSION_ERROR, e) # ⑤ 「③」で読み込んだ秘密鍵ファイルをPGPライブラリにインポートを行う @@ -99,7 +98,7 @@ def handler(event, context): gpg.import_keys(key_file.read()) logger.info('I-05-02 秘密鍵ファイルをインポートしました') except Exception as e: - logger.error(f'E-05-01 秘密鍵ファイルのインポートに失敗しました エラー内容:{e}') + logger.exception(f'E-05-01 秘密鍵ファイルのインポートに失敗しました エラー内容:{e}') raise PrivateKeyImportException('E-05-01', EXTENSION_ERROR, e) # ⑥ 「④」で読み込んだPGP暗号化ファイルを「⑤」でインポートした秘密鍵ファイルで復号する @@ -110,7 +109,7 @@ def handler(event, context): decrypt_file = open(PATH_TEMP_DECRYPT_FILE, 'rb') logger.info('I-06-02 PGP暗号化ファイルを復号しました') except Exception as e: - logger.error(f'E-06-01 PGP暗号化ファイルの復号化に失敗しました エラー内容:{e}') + logger.exception(f'E-06-01 PGP暗号化ファイルの復号化に失敗しました エラー内容:{e}') raise DecryptException('E-06-01', EXTENSION_DECRYPT_ERROR, e) # ⑦ 各ファイルをS3に出力する @@ -127,7 +126,7 @@ def handler(event, context): decrypt_file.close logger.info('I-07-03 復号化ファイルをS3に出力しました') except Exception as e: - logger.error(f'E-07-01 復号化ファイルのS3出力に失敗しました エラー内容:{e}') + logger.exception(f'E-07-01 復号化ファイルのS3出力に失敗しました エラー内容:{e}') raise FileOutputException('E-07-01', EXTENSION_ERROR, e) # 「④」で読み込んだPGP暗号化ファイルを以下に移動(コピー削除)する @@ -143,7 +142,7 @@ def handler(event, context): s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path) logger.info('I-07-05 PGP暗号化ファイルをバックアップ用バケットに移動しました') except Exception as e: - logger.error(f'E-07-02 PGP暗号化ファイルのS3出力に失敗しました エラー内容:{e}') + logger.exception(f'E-07-02 PGP暗号化ファイルのS3出力に失敗しました エラー内容:{e}') raise FileOutputException('E-07-02', EXTENSION_ERROR, e) # 「⑥」で復号化したファイルをデータ取込用バケットに出力する try: @@ -158,22 +157,19 @@ def handler(event, context): import_file_obj.copy(copy_source) logger.info(f'I-07-07 復号化ファイルをS3に出力しました') except Exception as e: - logger.error(f'E-07-03 復号化ファイルのS3出力に失敗しました エラー内容:{e}') + logger.exception(f'E-07-03 復号化ファイルのS3出力に失敗しました エラー内容:{e}') raise FileOutputException('E-07-02', EXTENSION_ERROR, e) # ⑧ 処理終了ログを出力する logger.info('I-08-01 処理終了 SAPデータ復号処理') except EncryptFileReadException as e: - traceback.print_exc() create_status_file(s3_event, e.extension) error_notice(e.id, e.arg) except CustomException as e: - traceback.print_exc() create_status_file(s3_event, e.extension) move_encrypt_file(s3_event) error_notice(e.id, e.arg) except Exception as e: - logger.error(f'E-99 想定外のエラーが発生しました エラー内容:{e}') - traceback.print_exc() + logger.exception(f'E-99 想定外のエラーが発生しました エラー内容:{e}') create_status_file(s3_event, EXTENSION_ERROR) move_encrypt_file(s3_event) error_notice('E-99', e) @@ -189,8 +185,7 @@ def create_status_file(s3_event, extension) -> None: result_error_obj.put(Body='') logger.error(f'E-ERR-01 recvディレクトリにエラーファイルを作成しました ファイル名:{result_error_file_name} 出力先:{s3_event.bucket_name}/{result_error_key}') except Exception as e: - logger.error(f'E-96 エラーステータスファイルの作成に失敗しました エラー内容:{e}') - traceback.print_exc() + logger.exception(f'E-96 エラーステータスファイルの作成に失敗しました エラー内容:{e}') return @@ -208,8 +203,7 @@ def move_encrypt_file(s3_event) -> None: s3_client.delete_object(Bucket=s3_event.bucket_name, Key=s3_event.file_path) logger.error(f'E-ERR-02 recv_errorディレクトリにファイルを移動しました 移動元:{s3_event.bucket_name}/{s3_event.file_path} 移動先:{s3_event.bucket_name}/{error_key}') except Exception as e: - logger.error(f'E-97 PGP暗号化ファイルの移動に失敗しました エラー内容:{e}') - traceback.print_exc() + logger.exception(f'E-97 PGP暗号化ファイルの移動に失敗しました エラー内容:{e}') return @@ -225,8 +219,7 @@ def error_notice(error_log_id, exception) -> None: sns_client.publish(**params) logger.error(f'E-ERR-03 処理異常通知の送信指示をしました 通知先トピック:{NDS_NOTICE_TOPIC}') except Exception as e: - logger.error(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') - traceback.print_exc() + logger.exception(f'E-98 処理異常通知の送信指示に失敗しました エラー内容:{e}') return