受領ファイルのLOAD完了後、受領ファイルをバックアップバケットに移動する実装漏れほ補完

This commit is contained in:
x.azuma.m@nds-tyo.co.jp 2023-05-15 14:50:48 +09:00
parent 2f1b42705a
commit 2cb6cb5d99
4 changed files with 23 additions and 17 deletions

View File

@ -8,6 +8,7 @@ ULTMARC_DATA_BUCKET=****************
ULTMARC_DATA_FOLDER=recv
JSKULT_BACKUP_BUCKET=****************
ULTMARC_BACKUP_FOLDER=ultmarc
VJSK_BACKUP_FOLDER=vjsk
JSKULT_CONFIG_BUCKET=**********************
JSKULT_CONFIG_CALENDAR_FOLDER=jskult/calendar
JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME=jskult_holiday_list.txt

View File

@ -112,6 +112,10 @@ class UltmarcBackupBucket(JskUltBackupBucket):
_folder = environment.ULTMARC_BACKUP_FOLDER
class VjskBackupBucket(JskUltBackupBucket):
_folder = environment.VJSK_BACKUP_FOLDER
class VjskReceiveBucket(S3Bucket):
_bucket_name = environment.JSKULT_DATA_BUCKET
_recv_folder = environment.JSKULT_DATA_FOLDER_RECV
@ -140,3 +144,13 @@ class VjskReceiveBucket(S3Bucket):
file = os.path.join(temp_dir, extracted_file)
ret.append(file)
return ret
def backup_dat_file(self, target_files: list, datetime_key: str):
jskult_backup_bucket = VjskBackupBucket()
for target_file in target_files:
backup_from_file_path = target_file.get("filename")
backup_to_filename = backup_from_file_path.replace(f"{self._recv_folder}/", "")
backup_key = f'{jskult_backup_bucket._folder}/{datetime_key}/{backup_to_filename}'
self._s3_client.copy(self._bucket_name, backup_from_file_path,
jskult_backup_bucket._bucket_name, backup_key)
self._s3_client.delete_file(self._bucket_name, backup_from_file_path)

View File

@ -30,9 +30,10 @@ def exec():
# V実消化データファイル受領チェック
logger.debug('V実消化データファイル受領チェック開始')
received_s3_files = []
try:
# S3バケットにある受領済のV実消化データファイルの存在チェックをする
_check_received_files()
received_s3_files = _check_received_files()
except BatchOperationException as e:
logger.debug('受領したV実消化データファイルに未受領もものがあります')
@ -43,7 +44,7 @@ def exec():
logger.debug('V実消化データ取込開始')
try:
# S3バケットにある受領済のV実消化データファイルをデータベースに登録する
_import_file_to_db()
_import_file_to_db(received_s3_files)
except Exception as e:
logger.debug(f'データベース登録失敗 {e}')
raise e
@ -52,7 +53,7 @@ def exec():
logger.debug('V実消化データ受領ファイルバックアップ退避開始')
try:
# 取込が完了したS3バケットにある受領ファイルをバックアップ用S3バケットに移動する
_backup_received_files()
vjsk_recv_bucket.backup_dat_file(received_s3_files, batch_context.syor_date)
except BatchOperationException as e:
logger.debug('V実消化データ受領ファイルのバックアップ退避が失敗しました')
@ -80,7 +81,7 @@ def _check_if_file_exists(src_list: list, condkey: str) -> bool:
return ret
def _check_received_files():
def _check_received_files() -> list:
"""V実消化連携データファイル受領確認処理"""
logger.debug('_check_received_files start')
@ -151,16 +152,13 @@ def _check_received_files():
logger.debug('_check_received_files done')
return
return received_s3_files
def _import_file_to_db():
def _import_file_to_db(received_s3_files: list):
"""V実消化連携データ取込処理"""
logger.debug('_import_file_to_db start')
# S3バケット「実消化&アルトマーク V実消化データ受領バケット」にある受領ファイル一覧を取得
received_s3_files = vjsk_recv_bucket.get_s3_file_list()
# S3バケット「実消化&アルトマーク V実消化データ受領バケット」の受領ファイルをローカルストレージにdownloadして辞書化する
target_dict = {}
for s3_file_path in received_s3_files:
@ -253,11 +251,3 @@ def _determine_today_is_stockslipdata_target():
raise e
logger.debug("_determine_today_is_stockslipdata_target done")
return ret
def _backup_received_files():
logger.debug("_backup_received_files start")
# TODO 受領バケットのファイル → バックアップバケット
logger.debug("_backup_received_files done")

View File

@ -12,6 +12,7 @@ ULTMARC_DATA_BUCKET = os.environ['ULTMARC_DATA_BUCKET']
ULTMARC_DATA_FOLDER = os.environ['ULTMARC_DATA_FOLDER']
JSKULT_BACKUP_BUCKET = os.environ['JSKULT_BACKUP_BUCKET']
ULTMARC_BACKUP_FOLDER = os.environ['ULTMARC_BACKUP_FOLDER']
VJSK_BACKUP_FOLDER = os.environ['VJSK_BACKUP_FOLDER']
JSKULT_CONFIG_BUCKET = os.environ['JSKULT_CONFIG_BUCKET']
JSKULT_CONFIG_CALENDAR_FOLDER = os.environ['JSKULT_CONFIG_CALENDAR_FOLDER']
JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME = os.environ['JSKULT_CONFIG_CALENDAR_HOLIDAY_LIST_FILE_NAME']