Reputation: 323
I have written an AWS Lambda function in Python that filters through instances and turns them on or off depending on how they are tagged. This will show you a working function, and the set-up needed to get it working. If you have questions on anything post it in the comments.
Here is my Lambda Function as of now:
import boto3
def lambda_handler(event, context):
startStop = event['startStop']
vertical = event['vertical']
isRunning = ''
if(startStop == 'start'):
isRunning = 'stopped'
elif (startStop == 'stop'):
isRunning = 'running'
ec2 = boto3.resource('ec2')
filters = [
{
'Name': 'instance-state-name',
'Values': [isRunning]
},
{
'Name': 'tag:Vertical',
'Values': [vertical]
}
]
instances = ec2.instances.filter(Filters=filters)
runningInstances = [instance.id for instance in instances]
if len(runningInstances) > 0:
if(startStop == 'start'):
shuttingDown = ec2.instances.filter(InstanceIds=runningInstances).start()
elif (startStop == 'stop'):
shuttingDown = ec2.instances.filter(InstanceIds=runningInstances).stop()
For reference, here is my mapping template:
{
"startStop":"$input.params('startStop')",
"vertical":"$input.params('vertical')"
}
And this is how I am passing in the parameters within the URL:
https://awslambdaapiurl.../prod/-params?startStop=start&vertical=TEST
Upvotes: 22
Views: 31994
Reputation: 141
The Asker answered their question by editing their post, but for other newbies:
When passing parameters via URL, the event
parameter within the lambda_handler
function is a dictionary where the URL parameters are within the queryStringParameters
key:
Entering in your browser https://awslambdaapiurl/?startStop=start&vertical=TEST
would be accessed by python within the lambda_handler
function as:
event['queryStringParameters']['startStop']
event['queryStringParameters']['vertical']
Upvotes: 3
Reputation: 914
You can use the queryStringParameters on event object.
request_data = event['queryStringParameters']
startStop = request_data['startStop']
vertical = request_data['vertical']
Upvotes: 4
Reputation: 4529
Pass in parameter values in a mapping template:
{
"startStop":"$input.params('startStop')",
"vertical":"$input.params('vertical')"
}
Read parameter values via event
Object:
startStop = event['startStop']
vertical = event['vertical']
Upvotes: 4