AWS Classroom notes – 12/08/2021

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
Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Animated Social Media Icons by Acurax Wordpress Development Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube