import boto3 client = boto3.client('stepfunctions') def get_state_machines(): response = client.list_state_machines( maxResults=123) state_machines = response['stateMachines'] return state_machines def get_state_machines_with_app_family(state_machines): state_machines_with_app_family = [] for each_state_machine in state_machines: arn = each_state_machine['stateMachineArn'] response = client.list_tags_for_resource( resourceArn=arn ) i = 0 while i < len(response['tags']): if 'application_family' in response['tags'][i].values(): state_machines_with_app_family.append(each_state_machine) i += 1 return state_machines_with_app_family def print_percentage_info(contains_app_family, state_machines): percent = (len(contains_app_family) / len(state_machines)) * 100 print('Amount of state machines: ' + str(len(state_machines))) print('Contains app family tag: ' + str(len(contains_app_family))) print('Percent ' + str(int(percent)) + '%') def main(): """Start script.""" state_machines = get_state_machines() state_machines_with_app_family = get_state_machines_with_app_family(state_machines) print_percentage_info(state_machines_with_app_family, state_machines) if __name__ == '__main__': main()