def lambda_handler()

in Back-End/lambdas/send_sqs_message.py [0:0]


def lambda_handler(event, context):

    try:

        print(json.dumps(event))
        passed_function = event['queryStringParameters']['function']
        print(f'function is {passed_function}')

        # Get Accounts
        list_of_accounts = []
        for a in accNumbers.split(','):
            list_of_accounts.append(a)

        # Get Regions
        list_of_regions = []
        for b in regions.split(','):
            list_of_regions.append(b)

        # Global API that don't need to hit every region, e.g IAM, S3 etc
        global_api = ['iam-roles', 'iam-users',
                      'iam-attached-policys', 's3-buckets']

        allowed_functions = [
            'cron',
            'iam-roles',
            'iam-users',
            'iam-attached-policys',
            's3-buckets',
            'org',
            'lambda',
            'ec2',
            'lb',
            'ebs',
            'rds',
            'odcr',
            'lightsail',
            'network-interfaces',
            'subnet',
            'vpc',
            'ri',
            'eks',
            'testpass'
        ]

        # Only Allow functions in this list
        if passed_function not in allowed_functions:
            print('passed function isnt on allowed list')
            return reply(message=f'passed function: {passed_function} isnt on allowed list', status_code=500)

        else:

            # if cron, send all messages to all accounts
            if passed_function == 'cron':

                # Organizations only needs source_account
                send_sqs_message(accountNumber=source_account,
                                 function='org', region='us-east-1')

                for i in list_of_accounts:

                    # Global API, don't hit each region
                    send_sqs_message(
                        accountNumber=i, function='iam-roles', region='us-east-1')
                    send_sqs_message(
                        accountNumber=i, function='iam-users', region='us-east-1')
                    send_sqs_message(
                        accountNumber=i, function='iam-attached-policys', region='us-east-1')
                    send_sqs_message(
                        accountNumber=i, function='s3-buckets', region='us-east-1')

                    for b in list_of_regions:

                        print(
                            f'cron passed: {passed_function} in account: {i} into region: {b}')
                        send_sqs_message(
                            accountNumber=i, function='lambda', region=b)
                        send_sqs_message(
                            accountNumber=i, function='ec2', region=b)
                        send_sqs_message(
                            accountNumber=i, function='lb', region=b)
                        send_sqs_message(
                            accountNumber=i, function='ebs', region=b)
                        send_sqs_message(
                            accountNumber=i, function='eks', region=b)
                        send_sqs_message(
                            accountNumber=i, function='rds', region=b)
                        send_sqs_message(
                            accountNumber=i, function='odcr', region=b)
                        send_sqs_message(
                            accountNumber=i, function='lightsail', region=b)
                        send_sqs_message(
                            accountNumber=i, function='vpc', region=b)
                        send_sqs_message(
                            accountNumber=i, function='network-interfaces', region=b)
                        send_sqs_message(
                            accountNumber=i, function='subnet', region=b)
                        send_sqs_message(
                            accountNumber=i, function='ri', region=b)

            # if function is organizations
            elif passed_function == 'org':
                send_sqs_message(accountNumber=source_account,
                                 function='org', region='us-east-1')

            # if function is global and doesn't need each region
            elif passed_function in global_api:
                for i in list_of_accounts:
                    send_sqs_message(
                        accountNumber=i, function=passed_function, region='us-east-1')

            # Else send the function to all accounts
            else:

                for i in list_of_accounts:

                    # Do rest of calls in list of regions
                    for b in list_of_regions:
                        print(
                            f'sending function: {passed_function} in account: {i} into region: {b}')
                        send_sqs_message(
                            accountNumber=i, function=passed_function, region=b)

            # Reply back
            return reply(message='successfully passed message to sqs', status_code=200)

    except ClientError as e:
        print('Unexpected error: %s' % e)
        return reply(message={'message': f'Error: {e}'}, status_code=500)