import os from json import loads, dumps from datetime import datetime from boto3 import client # from jsonschema import validate from schema import SCHEMA_DEF STEP_FUNCTIONS_CLI = client('stepfunctions') def get_params(bucket_name, key_name): params = loads( client('s3').get_object(Bucket=bucket_name, Key=key_name)['Body'].read().decode('utf-8') ) # validate(params, SCHEMA_DEF) return params def lambda_handler(event, context): bucket_name = event['Records'][0]['s3']['bucket']['name'] return dumps( STEP_FUNCTIONS_CLI.start_execution( stateMachineArn=os.environ['STEP_FUNCTIONS_ARN'], name=datetime.now().strftime("%Y_%m_%d_%H_%M_%S"), input=dumps( { 'bucket': bucket_name, 'currentDate': datetime.now().strftime("%Y_%m_%d_%H_%M_%S"), 'params': get_params(bucket_name, os.environ['PARAMS_FILE']) } ) ), default=str )