Merge pull request #34 feature-NEWDWH2021-494 into develop-8sap
This commit is contained in:
commit
19b45c09b6
6
.gitignore
vendored
6
.gitignore
vendored
@ -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/*
|
||||
lambda/mbj-newdwh2021-staging-PublishFromLog/node_modules/*
|
||||
|
||||
# Pythonの仮想環境
|
||||
.venv
|
||||
__pycache__
|
||||
|
||||
@ -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"]
|
||||
@ -23,6 +22,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
|
||||
@ -78,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から秘密鍵ファイルを読み込む
|
||||
@ -87,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ライブラリにインポートを行う
|
||||
@ -98,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暗号化ファイルを「⑤」でインポートした秘密鍵ファイルで復号する
|
||||
@ -109,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に出力する
|
||||
@ -126,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暗号化ファイルを以下に移動(コピー削除)する
|
||||
@ -142,23 +142,34 @@ 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:
|
||||
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.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)
|
||||
@ -174,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
|
||||
|
||||
|
||||
@ -193,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
|
||||
|
||||
|
||||
@ -210,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
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user