#!/usr/bin/env python3 # -*- encoding: utf-8 -*- # vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab import json import random import string random.seed(47) MIN_LEN, MAX_LEN = (1, 20) MIN_NUM, MAX_NUM = (1, 100) ALLOWED_CHARS = { 'letters': string.ascii_letters, 'lowercase': string.ascii_lowercase, 'uppercase': string.ascii_uppercase, 'digits': string.digits, } DEFAULT_PARAMS = { 'chars': 'letters', 'num': f'{MIN_NUM}', 'len': f'{MIN_LEN}' } def lambda_handler(event, context): params = event['queryStringParameters'] if event.get('queryStringParameters', {}) else {} params.update({k: v for k, v in DEFAULT_PARAMS.items() if k not in params}) char_type = params['chars'] allowed_chars = ALLOWED_CHARS[char_type] num = min(max(int(params['num']), MIN_NUM), MAX_NUM) length = min(max(int(params['len']), MIN_LEN), MAX_LEN) ret = [''.join(random.choices(allowed_chars, k=length)) for _ in range(num)] return { 'statusCode': 200, 'body': json.dumps(ret) } if __name__ == '__main__': event = { "resource": "/random/strings", "path": "/random/strings", "httpMethod": "GET", "headers": None, "multiValueHeaders": None, "queryStringParameters": { "chars": "letters", # [letters, lowercase, uppercase, digits] "num": "3", "len": "10" }, "multiValueQueryStringParameters": { "chars": [ "letters" ], "num": [ "3" ], "len": [ "10" ] }, "pathParameters": None, "stageVariables": None, "requestContext": { "resourceId": "cwnr1x", "resourcePath": "/random/strings", "httpMethod": "GET", "extendedRequestId": "cV_t5H1EoAMFVQg=", "requestTime": "29/Nov/2022:03:16:27 +0000", "path": "/random/strings", "accountId": "111122223333", "protocol": "HTTP/1.1", "stage": "test-invoke-stage", "domainPrefix": "testPrefix", "requestTimeEpoch": 1669691787960, "requestId": "67e474a5-289e-4719-9eb7-a2417e9f442a", "identity": { "cognitoIdentityPoolId": None, "cognitoIdentityId": None, "apiKey": "test-invoke-api-key", "principalOrgId": None, "cognitoAuthenticationType": None, "userArn": "arn:aws:iam::111122223333:user/example", "apiKeyId": "test-invoke-api-key-id", "userAgent": "aws-internal/3 aws-sdk-java/1.12.336 Linux/5.4.214-134.408.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/25.352-b09 java/1.8.0_352 vendor/Oracle_Corporation cfg/retry-mode/standard", "accountId": "111122223333", "caller": "AIDACKCEVSQ6C2EXAMPLE", "sourceIp": "test-invoke-source-ip", "accessKey": "AKIAIOSFODNN7EXAMPLE", "cognitoAuthenticationProvider": None, "user": "AIDACKCEVSQ6C2EXAMPLE" }, "domainName": "testPrefix.testDomainName", "apiId": "is8hw85n7h" }, "body": None, "isBase64Encoded": False } #print(json.dumps(event, indent=2)) ret = lambda_handler(event, None) print(ret)