Navigate to Lambda in AWS Console Click “Create function” Choose “Author from scratch” Runtime: Python 3.x Name: e.g., “get-user-list” Paste the Python code into “Code” page and click “Deploy” button
import boto3 from datetime import datetime from boto3.dynamodb.conditions import Key dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('user_list') def create_nested_structure(data, current_level, max_level): if current_level >= max_level: return data return { f"level_{current_level}": { "data": data, "nested": create_nested_structure(data, current_level + 1, max_level), "metadata": { "level_info": f"This is level {current_level}", "timestamp": datetime.now().isoformat(), "metrics": { "depth": current_level, "remaining_levels": max_level - current_level, "complexity_score": max_level * current_level } } } } def create_complex_response(user_data, nested_level): base_data = { "id": f"user_{user_data['user_id']}", "timestamp": datetime.now().isoformat(), "category": "Personnel", "details": { "name": { "first": user_data['first_name'], "last": user_data['last_name'] }, "company": { "name": user_data['company_name'], "web": user_data['web'] }, "contact_info": { "address": { "street": user_data['address'], "city": user_data['city'], "state": user_data['state'], "postcode": user_data['post'] }, "communication": { "phones": [ { "type": "primary", "number": user_data['phone1'] }, { "type": "secondary", "number": user_data['phone2'] } ], "email": user_data['email'] } } } } return create_nested_structure(base_data, 1, nested_level) def lambda_handler(event, context): try: # Get parameters from event body limit = int(event.get('limit', 10) if event.get('limit') else 10) nested_level = int(event.get('nested_level', 1) if event.get('nested_level') else 1) # Validate nested_level if nested_level < 1: nested_level = 1 elif nested_level > 30: # Set a reasonable maximum nested_level = 30 # 29 nested is the limit on Blue Prism # Scan DynamoDB table with limit response = table.scan( Limit=limit ) items = response.get('Items', []) # Transform items into complex nested structure transformed_data = [create_complex_response(item, nested_level) for item in items] # Create final response return { "statusCode": 200, "headers": { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" }, "success": True, "timestamp": datetime.now().isoformat(), "total_records": len(transformed_data), "limit_applied": limit, "nesting_level": nested_level, "data": transformed_data, "metadata": { "api_version": "1.0", "service": "user-data-api", "complexity_info": { "max_depth": nested_level, "structure_type": "recursive", "total_nodes": len(transformed_data) * nested_level } } } except Exception as e: return { "statusCode": 500, "success": False, "message": "Error processing request", "error": str(e) } ...