Feb-09-2022, 01:47 PM
Hello everyone
New user here and VERY new to Python so still learning a lot on it.
In my code below I use this to call an Api using 'Method' and 'Value' parameters. The URL basically acts as the frontend for the user to edit the Min, Max or capcity size of an AutoScaling Group.
For example on the URL they use to call the Api they enter Method3=Min and Value3=2 This works fine and allows the user to input whatever they want into Value2 so they can change the settings of an AutoScaling Group.
If the user makes a mistake and inputs Value as 100 instead of 10 in the URL for example Value3=100, I would not want the Autoscaling Group Max size to change to 100. Therefore is there of editing my script so I can stop that Max size from changing to 100? Like some sort of max size value in the script itself?
To invoke the Api I use PowerShell command lwith the URL
invoke-webrequest -Uri 'https://name-of-api.amazonaws.com/?TagKey=tag-key-name&TagValue=tag-value-name&Method1=Capacity&Value1=1&Method2=Min&Value2=1&Method3=Max&Value3=4' -Headers @{"X-Api-Key"="name-of-api-key"}
As you can see the user has the power to change 'Method3=Max' to have a 'Value3' of 100 if they want
Thanks
New user here and VERY new to Python so still learning a lot on it.
In my code below I use this to call an Api using 'Method' and 'Value' parameters. The URL basically acts as the frontend for the user to edit the Min, Max or capcity size of an AutoScaling Group.
For example on the URL they use to call the Api they enter Method3=Min and Value3=2 This works fine and allows the user to input whatever they want into Value2 so they can change the settings of an AutoScaling Group.
If the user makes a mistake and inputs Value as 100 instead of 10 in the URL for example Value3=100, I would not want the Autoscaling Group Max size to change to 100. Therefore is there of editing my script so I can stop that Max size from changing to 100? Like some sort of max size value in the script itself?
To invoke the Api I use PowerShell command lwith the URL
invoke-webrequest -Uri 'https://name-of-api.amazonaws.com/?TagKey=tag-key-name&TagValue=tag-value-name&Method1=Capacity&Value1=1&Method2=Min&Value2=1&Method3=Max&Value3=4' -Headers @{"X-Api-Key"="name-of-api-key"}
As you can see the user has the power to change 'Method3=Max' to have a 'Value3' of 100 if they want
Thanks
import boto3 import botocore import os import json import logging # Set up logger. logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) # Set up clients. client = boto3.client('autoscaling') def handler(event, context): # Step one: get all AutoScaling Groups. response = client.describe_auto_scaling_groups( MaxRecords=100 ) # Make an empty list for ASG info storage. allAutoScaling = [] # empty list of no items. # Get the initial results and posts them to CloudWatch logs allAutoScaling.append(response['AutoScalingGroups']) logger.info(allAutoScaling) # If 'Marker' is present in the response, we have more to get. while 'Marker' in response: old_marker = response['Marker'] response = client.describe_auto_scaling_groups( MaxRecords=100, Marker = old_marker ) allAutoScaling.append(response['AutoScalingGroups']) # Cycles back up to repeat the pagination. # Now to find the tags specified in the Api Uri for autoscaling in allAutoScaling: for key in autoscaling: for tag in key['Tags']: if tag['Key'] == event['TagKey'] and tag['Value'] == event['TagValue']: if event['Method2'] == "Min": if event['Value2']: Value2 = int(event['Value2']) response = client.update_auto_scaling_group( AutoScalingGroupName=key['AutoScalingGroupName'], MinSize=Value2 ) else: print('Min already at required level') if event['Method3'] == "Max": if event['Value3']: Value3 = int(event['Value3']) response = client.update_auto_scaling_group( AutoScalingGroupName=key['AutoScalingGroupName'], MaxSize=Value3 ) else: print('Max already at required level') if event['Method1'] == "Capacity": if event['Value1']: Value1 = int(event['Value1']) response = client.set_desired_capacity( AutoScalingGroupName=key['AutoScalingGroupName'], DesiredCapacity=Value1 ) else: print('Capacity already at required level')