import boto3 from datetime import datetime, timedelta import json import main def one_time_schedule( lambda_arn: str, schedule_role_arn: str, minutes: int, param: main.Param ) -> str: client = boto3.client('scheduler') schedule_time = datetime.now() + timedelta(minutes = minutes) schedule_expression = f"at({schedule_time.isoformat()})" schedule_name = f"menu-trigger-{schedule_time.strftime('%Y%m%d%H%M%S')}" rule_response = client.create_schedule( Name = schedule_name, ScheduleExpression = schedule_expression, ScheduleExpressionTimezone = 'Asia/Seoul', State = 'ENABLED', Target = { 'Arn': lambda_arn, 'RoleArn': schedule_role_arn, 'Input': json.dumps({ 'slack_url': param.slack_url, 'date': param.date, 'count': param.count + 1 }), 'RetryPolicy': {'MaximumRetryAttempts': 0} }, ) client.update_schedule( Name = schedule_name, ActionAfterCompletion = 'DELETE' ) return rule_response['RuleArn']