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)