Its been quite sometime and have been busy working on multiple technologies. Recently my lead asked me to create a python script to fetch the minimum and maximum instances count of all the Elastic beanstalk environments. It was great to work on this requirement. Below is the python script
def get_details(): row1=['Application Name','Environment Name','Min Count','Max count'] with open('EB-instances-count',"a") as csvDataFile: writer = csv.writer(csvDataFile) writer.writerow(row1) try: eb = boto3.client('elasticbeanstalk',"us-east-1") NameInfo=eb.describe_environments() for names in NameInfo['Environments']: app_name=(names['ApplicationName']) env_name=(names['EnvironmentName']) response = eb.describe_configuration_settings( EnvironmentName=env_name, ApplicationName=app_name ) minCount=response['ConfigurationSettings']['OptionSettings'] maxCount=response['ConfigurationSettings']['OptionSettings'] minVal=minCount['Value'] maxVal=maxCount['Value'] print "Gathering count for Environment: " + env_name fields=[app_name,env_name,minVal,maxVal] with open('EB-instances-count.csv',"a") as csvDataFile: writer = csv.writer(csvDataFile) writer.writerow(fields) except ClientError as e: if e.response['Error']['Code'] == "InvalidParameterValue": print env_name + " Environment not found, so skipping it" pass if __name__ == '__main__': get_details()
In this I am getting the application names and environment names of Elastic beanstalk in a region and parsing through them and fetching the min and max instances count. Also after fetching the counts I am writing them to .csv (spreadsheet) file. We can run this script at any time to know the present count of instances being used. This script can be further updated/modified to fetch different information of the environments in Elastic beanstalk.
The interesting part would be to filter the required information from the response. And other thing is lets say if the environment is deleted it will take sometime to disappear from the console and we might see error as we can still get the environment name but not its settings as its already deleted right.
So in this case we have to capture the particular error the exception part and ignore it.
Note: Be careful about the indentation 🙂
Let me know for any questions. Thanks