AWS Lambda functions
- Lambda function to stop ec2 instances
import json
import boto3
print('Loading function')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
print(type(context))
print(type(event))
name = event['Key']
value = event['Value']
instance_ids = get_ec2_instance_id(key=name, value=value)
stop_ec2(instance_ids)
return instance_ids # Echo back the first key value
#raise Exception('Something went wrong')
def get_ec2_instance_id(key='Name', value='Web1'):
ec2 = boto3.client('ec2')
response = ec2.describe_instances(Filters = [
{
'Name': f'tag:{key}',
'Values': [
value,
]
}])
instance_ids = []
for reservation in response['Reservations']:
instance_ids.append(reservation['Instances'][0]['InstanceId'])
print(reservation['Instances'][0]['InstanceId'])
return instance_ids
def stop_ec2(instance_ids=[]):
ec2 = boto3.client('ec2')
try:
if len(instance_ids) > 0:
ec2.stop_instances(InstanceIds=instance_ids)
except Exception as e:
print(e)
- Lambda function which will be triggered has the following syntax is reffered as handler
def lambda_handler(event, context):
pass
- The event is a dictionary which holds the values passed when triggering a lambda function
- context is a bootstrap.LambdaContext which has information about the current function and other details Refer Here
Invoation Types
- At a high level, lambda functions can be invoked using the following
- A push: This is synchronous type of invocation where we make a request for the function to be invoked and wait for the function response.
- An event: The asynchronous or event method for invoking functions is mainly used by other AWS services in the AWS ecosystem to prompt a lambda function as result of some action (example: when s3 object is uploaded invoke lambda function)
- A Stream-based model
Event Sources
- The following are the ways in which we can invoke a lambda function
- Via AWS Lambda Invoke API Refer Here
- By using SDK Refer Here. Refer invoke and invoke async methods in Client of lambda
- Event Sources
Like this:
Like Loading...