Skip to main content

AWS - EC2 Instance Start / Stop using AWS Lambda Python

Steps to Setup Lambda to Start / Stop EC2 instances:

1) Create a Lambda Function with 'Author from scratch' and with Function name 'ecStartInstance' and Runtime 'Python 3.8'



2) Choose new role with basic Lambda permission




3) Create policy using IAM role




4) Click on JSON Editor option and update EC2 instance policy json and click on 'Review Policy'


JSON:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] }


5) Give name and description for the policy and click on 'Create Policy'.


6) Edit the IAM role & add IAM Policy to that.



Click on IAM role. Click on 'Attach Policies' and select 'ec_start_stop_lambda' .


7) Write Lambda Function and select 'Configure test event'.



code:

import boto3
region = 'us-east-1'
instances = ['i-0a43e8f5990e24627',]
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.start_instances(InstanceIds=instances)
    print('stopped your instances: ' + str(instances))


8) Give event name 'ecStartEvent'


9) Edit basic settings, set timeout as 10 seconds.




10) To test the lambda function, click on 'Test' button.


Thats it.

Comments

Popular posts from this blog

NASA's EMIT - Mineral dust investigator

Installing Postgres using Docker Container - Ubuntu 18.04

 Step1: Install Docker using Ubuntu Terminal Command: sudo apt install docker.io Step 2: Check docker is available command: docker Step 3: Check Docker Service is up and running. command: sudo service docker status Step 4: Pull latest postgres into docker command: docker pull postgres Step 5: check docker image is available cmd: docker images Step 6: Run the docker postgres image and validate container started running. cmd: sudo docker run --name psql-ultra -e POSTGRES_PASSWORD=master -d postgres sudo docker ps Note: postgres port 5432 and ubuntu 5432 tcp port has to get update. So normal -p command with docker won't work. Hope this helps!