import boto3 from datetime import datetime import csv 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_info(state_machines): state_machines_info = [] for each_state_machine in state_machines: name = each_state_machine['name'] arn = each_state_machine['stateMachineArn'] response = client.list_tags_for_resource( resourceArn=arn ) tags = 'None' i = 0 while i < len(response['tags']): if 'application_family' in response['tags'][i].values(): tags = response['tags'][i] i += 1 state_machines_info.append({'Name': name, 'Tag': tags}) return state_machines_info def create_state_machines_list(state_machines_info): secrets_columns = ['Name', 'Tag'] now = datetime.now() dt_string = now.strftime('%d-%m-%Y-%H:%M:%S') with open('state_machines{date_time}.csv'.format(date_time=dt_string), 'w') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=secrets_columns) writer.writeheader() writer.writerows(state_machines_info) def main(): """Start script.""" state_machines = get_state_machines() state_machines_info = get_state_machines_info(state_machines) create_state_machines_list(state_machines_info) if __name__ == '__main__': main()