in source/get-accounts-info-lambda.py [0:0]
def lambda_handler(event, context):
logger.info(json.dumps(event))
accounts = {}
try:
if os.environ['FILE_OVERRIDE'].lower() == 'true':
accounts = list_accounts_from_file()
else:
accounts = list_accounts_from_organizations()
resource_parameters = accounts['accounts']
logger.info("Batching Accounts by 50 to overcome step-function Input limitation of max 32,768 characters")
n = 50
accountsBatch = [resource_parameters[i * n:(i + 1) * n] for i in range((len(resource_parameters) + n - 1) // n )]
response=[]
for batch in accountsBatch:
TA_data_extract_sfn_execution_ret = \
execute_state_machine(os.environ['EXTRACT_TA_DATA_SFN_ARN'],
json.dumps(batch))
response.append({
'statusCode':
TA_data_extract_sfn_execution_ret['ResponseMetadata']
['HTTPStatusCode'],
'body': json.dumps({"TA_data_extract_sfn_execution_ret":
TA_data_extract_sfn_execution_ret['executionArn']})
})
if os.environ[("Tags")].strip() != '':
tag_data_extract_sfn_execution_ret = \
execute_state_machine(os.environ['TAG_DATA_EXTRACT_SFN_ARN'], \
json.dumps(batch))
response.append({
'statusCode':
tag_data_extract_sfn_execution_ret['ResponseMetadata']
['HTTPStatusCode'],
'body': json.dumps({"tag_data_extract_sfn_execution_ret":
tag_data_extract_sfn_execution_ret['executionArn']})})
if os.environ['AnonymousUsage'].lower() == "yes":
send_anonymous_metric()
return response
except ClientError as e:
e = sanitize_string(e)
logger.error("Unexpected client error %s" % e)
raise AWSTrustedAdvisorExplorerGenericException(e)
except Exception as f:
f = sanitize_string(f)
logger.error("Unexpected exception: %s" % f)
raise AWSTrustedAdvisorExplorerGenericException(f)