import boto3 import csv from datetime import datetime client = boto3.client('ecs') def get_clusters(): clusters = [] response = client.list_clusters() clusters.extend(response['clusterArns']) while 'nextToken' in response: response = client.list_clusters(nextToken=response['nextToken']) clusters.extend(response['clusterArns']) return clusters def get_clusters_with_services(clusters): i = 0 clusters_with_services = [] while i < len(clusters): response = client.list_services(cluster=clusters[i]) if response['serviceArns']: clusters_with_services.append({'cluster': clusters[i], 'service': response['serviceArns'][0]}) i += 1 return clusters_with_services def get_services_info(clusters_with_services): service_info = [] for each_service in clusters_with_services: response = client.describe_services( cluster=each_service['cluster'], services=[each_service['service']] ) response_tags = client.list_tags_for_resource( resourceArn=each_service['service'] ) i = 0 tags = 'None' while i < len(response_tags['tags']): if 'application_family' in response_tags['tags'][i].values(): tags = response_tags['tags'][i] i += 1 service_info.append({'Service Name': response['services'][0]['serviceName'], 'Tags': tags}) return service_info def create_services_list(service_info): now = datetime.now() dt_string = now.strftime('%d-%m-%Y-%H:%M:%S') service_columns = ['Service Name', 'Tags'] with open('services_ecs_{date_time}.csv'.format(date_time=dt_string), 'w') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=service_columns) writer.writeheader() writer.writerows(service_info) def main(): """Start script.""" ecs_clusters = get_clusters() ecs_clusters_with_services = get_clusters_with_services(ecs_clusters) services_info = get_services_info(ecs_clusters_with_services) create_services_list(services_info) if __name__ == '__main__': main()