feat: DynamoDBテーブルのレコード有効期限用の項目を追加

This commit is contained in:
shimoda.m@nds-tyo.co.jp 2024-02-13 14:02:08 +09:00
parent d3615e38c4
commit 5cadb1a466

View File

@ -17,7 +17,7 @@ LOG_LEVEL = os.environ["LOG_LEVEL"]
MAIL_TEMPLATE_FOLDER_PATH = os.environ["MAIL_TEMPLATE_FOLDER_PATH"]
MBJ_NOTICE_TOPIC = os.environ["MBJ_NOTICE_TOPIC"]
PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME = os.environ["PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME"]
PROCESSED_MESSAGE_EXPIRES_PERIOD = os.environ["PROCESSED_MESSAGE_EXPIRES_PERIOD"]
PROCESSED_MESSAGE_EXPIRES_PERIOD = int(os.environ["PROCESSED_MESSAGE_EXPIRES_PERIOD"])
TZ = os.environ["TZ"]
# 定数
@ -79,7 +79,7 @@ def is_duplicate_message(message_id: str) -> bool:
)["Count"] != 0
def push_success_messages_to_dynamo_db(batch_item_success: list[str]) -> bool:
def put_success_messages_to_dynamo_db(batch_item_success: list[str]) -> bool:
"""処理済みのSQSメッセージIdをDynamoDBにPushする
Args:
@ -88,10 +88,19 @@ def push_success_messages_to_dynamo_db(batch_item_success: list[str]) -> bool:
Returns:
bool: 登録成功の場合True
"""
# レコードの有効期限を算出
now = datetime.datetime.now(ZoneInfo(TZ))
record_expiration_datetime = now + datetime.timedelta(minutes=PROCESSED_MESSAGE_EXPIRES_PERIOD)
record_expiration_time = record_expiration_datetime.timestamp()
for message_id in batch_item_success:
dynamodb_client.put_item(
TableName=PROCESSED_MESSAGE_DYNAMODB_TABLE_NAME,
Item={'message_id': {'S': message_id}}
Item={
'message_id': {'S': message_id},
'record_expiration_time': {'N': f'{record_expiration_time}'}
}
)
return True
@ -305,7 +314,7 @@ def lambda_handler(event, context):
logger.info('I-06-01 すべてのメッセージの処理完了')
# ⑦ メッセージを処理済として、以下のDynamoDBテーブルに記録する
push_success_messages_to_dynamo_db(batch_item_success)
put_success_messages_to_dynamo_db(batch_item_success)
logger.info('I-07-01 処理済みメッセージIDの記録完了')
logger.info('I-07-02 処理終了 Enciseデータ受領チェック処理')