5 out of 5
5
5 reviews on Udemy

AWS Automation with boto3 of Python and Lambda Functions

Learn Boto3 of Python & AWS Lambda with Python
Instructor:
Narendra P
30 students enrolled
Students will gain expertise with hands on realtime use cases using Boto3 and Lambda Functions for Automating their workloads
Students will get in detail concpets of boto3 (session, resource,client,collections,waiters and paginators)
Students will get in detail concepts of Lambda Function and Different types Lambda triggering methods

This Course is focused on concepts of Python Boto3 Module And Lambda using Python, Covers how to use Boto3 Module, Concepts of boto3 (session, resource, client, meta, collections, waiters and paginators) & AWS Lambda to build real-time tasks with Lots of Step by Step Examples.

This course also teaches how to refer to Boto3 Documentation to Develop Code For automating any kind of tasks in AWS.

 

Note: Collections,waiters and paginators are explained for different AWS services with different examples.

 

Introduction and Environmet setup for boto3

1
Objective of this Course
2
Introduction to boto3
3
Boto3 Environment Setup on RHEL Server to Work with AWS Services

Local Server: Win,RHEL,Ubuntu, IOS

step1:

          Python-2.7.x:

               pip install boto3

step2:

              Configure programatic access keys for Root or  with any IAM User.

              EC2_IAM

      S3_IAM

      EC2_S3_IAM with the help of awscli

              pip install awscli

             aws configure --profile  <any_name>

Python-3.7.x:

            pip3 install boto3

            pip3 install awscli

-------------------------------------

1. We can run our python-boto3 script for aws from any one of the Local Server.

  (Wind,RHEL,Ubuntu,IOS)

2. Configure Programatic access keys on your local servers using

     aws configure --profile  <any_name>

-------------------------------------------------------------------------

4
Boto3 Environment Setup on Windows Server to Work with AWS Services

pip install awscli

aws configure --profile dev_root


pip install boto3


verify with some script.

===============================

5
Concepts of Boto3 to Write Python Scripts for AWS Automation

Concepts of boto3 are:

     session, resource, client, meta, collections, waiters and paginators



Manual steps:

=============

Wana work with ec2 service

open browser  --> Provide credentials ==> AWS Management console


From AWS Managemet console --> get ec2 console




session object : AWS Management console


session object --> create resource object or client object to get particulat aws service console


======================================================================

import boto3

session_root=boto3.session.Session(profile_name="root")

(aws configure --profile root )


ec2_console_re=session_root.resource("ec2","us-east-2")

ec2_console_cli=session_root.client("ec2","us-east-2")


meta: (Useful for resource objet to get operations from client object)

=====

resource --> high level object--> more . operatations

client --> Low level object --> More dictionary operations







6
Complete Hands-on for session, resource and client concepts of boto3

Minimum steps to Automate AWS task with boto3 of Python



Python2.x:

  pip install boto3

  pip install awscli

  aws configure --profile <root,iam_user>


Python3.x:

  pip3 install boto3

  pip3 intall awcli

  aws configure --profile <root,iam_user>

-----------------------------------------

User_Home: .aws/config, credentials



session --> Management Console

s3_console --> Resource, client objects

ec2_console --> Resource, client object



Note: Resource object/method is available for only below aws services

['cloudformation', 'cloudwatch', 'dynamodb', 'ec2', 'glacier', 'iam', 'opsworks', 's3', 'sns', 'sqs']

7
Different Types of boto3 sessions

dev

dev_root --programmatic access keys

dev-iam  -- programmatic access keys

prod

prod_root -- programmatic access keys

prod_iam ---programmatic access keys

----------------------------------------------------

aws configure --profile dev_root

aws configure --profile dev_iam

aws configure --profile prod_root

aws configure --profile prod_iam


EC2-PART-1: Working with EC2 Instance using boto3

1
Simple Python boto3 Script to get the status of EC2 Instance

get_instancestatus.py  :

===================

#!/usr/bin/python                                                                                                         

import boto3                                                                                                             

session=boto3.session.Session(profile_name="dev_root")                                                                   

ec2_console_resource=session.resource(service_name="ec2",region_name="us-east-1")                                         

#print dir(ec2_console_resource)                                                                                         

instance_id=raw_input("Enter your instance id to the status: ")                                                           

my_instance=ec2_console_resource.Instance(id=instance_id)                                                                 

print my_instance.state['Name']                                                                                           

2
Menu Driven script to perform different status actions on EC2 Instance

MenuDrivenScriptToPerformActions.py

================================

#!/usr/bin/python                                                                                                         

import boto3                                                                                                             

session=boto3.session.Session(profile_name="dev_root")                                                                   

ec2_con_re=session.resource(service_name="ec2",region_name="us-east-1")                                                   

while True:                                                                                                               

  print "This script will perform the following actions on given instance id"                                             

  print "1. start"                                                                                                       

  print "2. stop"                                                                                                         

  print "3. reboot"                                                                                                       

  print "4. terminate"                                                                                                   

  print "5. Exit"                                                                                                         

  option=input("Enter your action by selecting a number between 1-5: ")                                                   

  if option==1:                                                                                                           

     in_id=raw_input("Enter your instance id: ")                                                                         

     my_in=ec2_con_re.Instance(id=in_id)                                                                                 

     print "Please wait we are starting instance"                                                                         

     my_in.start()                                                                                                       

  elif option==2:                                                                                                         

     in_id=raw_input("Enter your instance id: ")                                                                         

     my_in=ec2_con_re.Instance(id=in_id)                                                                                 

     print "Please wait we are stopping instance"                                                                         

     my_in.stop()                                                                                                         

  elif option==3:                                                                                                         

     in_id=raw_input("Enter your instance id: ")                                                                         

     my_in=ec2_con_re.Instance(id=in_id)                                                                                 

     print "Please wait we rebooting instance"                                                                           

     my_in.reboot()                                                                                                       

  elif option==4:                                                                                                         

     in_id=raw_input("Enter your instance id: ")                                                                         

     my_in=ec2_con_re.Instance(id=in_id)                                                                                 

     print "Please wait we are terminating instance"                                                                     

     my_in.terminate()                                                                                                   

  elif option==5:                                                                                                         

     print "Thank you for using this script"                                                                             

     break                                                                                                               

  else:                                                                                                                   

     print "Inavlid optionnPlease select between 1-5"                                                                   

                                                                                                                         

                                                                                                                         

3
What is a Waiter ? How to use waiters EC2 Instance ?
4
Simple Script to get EC2 Instance Tags

import boto3

session=boto3.session.Session(profile_name="dev_root")

ec2_con_re=session.resource(service_name="ec2",region_name="us-east-1")

in_id=raw_input("Enter your instance id: ")

my_in_ob=ec2_con_re.Instance(id=in_id)

print my_in_ob.tags

Boto3-Documentation-Help-PART-1

1
Availability of boto3 resource and client objects for AWS Services

EC2-PART-2: Working with EC2 Instances using boto3

1
EC2-Collections: Python Script to list All Instances from a particular region

session

resource

client

waiters


collections

paginators


=================================

EC2 Instance collections methods are: all(), limit(), filter()

===============================================================


step1: session --> custom session

step2: ec2_con   (resource,client )


#!/usr/bin/python

import boto3

import pprint

session=boto3.session.Session(profile_name="dev_root")

ec2_con_re=session.resource(service_name="ec2",region_name="us-east-1")

ec2_con_cli=session.client(service_name="ec2",region_name="us-east-1")

#--------------------------

print "Below is using resource object"

for each_in in ec2_con_re.instances.all():

    print each_in.instance_id, each_in.instance_type

print "Below is using client object"

#pprint.pprint( ec2_con_cli.describe_instances()['Reservations'])

for each_info in ec2_con_cli.describe_instances()['Reservations']:

   for each_inst in each_info['Instances']:

       print each_inst['InstanceId'], each_inst['InstanceType']

=========================================================================


EC2 Instance collections:

    resource -->all(),limit(),filter(Filters=[])

    client   -->Filters=[]

=========================================================================

2
Filters of Collections for EC2 Instances : List only running EC2 Instances

my_filter1={'Name':'instance-type','Values':['t2.micro']}

my_filter2={'Name':'instance-state-name','Values':['stopped','running','pending']

my_filter3={'Name':'key-name','Values':['DevOps']}

my_filter5={"Name":"availability-zone","Values":['us-east-1b','us-east-1a']}


Important:

========

my_filter6={"Name":"tag:key",Values=['value1','value2']}


Script:


import boto3

session=boto3.session.Session(profile_name="dev_root")

ec2_con_re=session.resource(service_name="ec2",region_name="us-east-1")

'''

f1={"Name": "availability-zone","Values":['us-east-1d']}

f2={'Name':'instance-state-name',"Values":['running']}

f3={'Name':'instance-type','Values':['t2.micro']}

for each_in in ec2_con_re.instances.filter(Filters=[f3]):

    print each_in.id,each_in.state

'''

#Filters using tags:

ftags={'Name':'tag:dev','Values':['db','webserver']}


for each_in in ec2_con_re.instances.filter(Filters=[ftags]):

    print each_in.id,each_in.state

3
All arguments for filter method of collections
4
Waiters and Start,stop,reboot or terminate multiple instances

Note:

Always use waiters from client object. It is a good practice



import boto3

from pprint import pprint

session=boto3.session.Session(profile_name="dev_root")

ec2_re=session.resource(service_name="ec2",region_name='us-east-1')

ec2_cli=session.client(service_name="ec2",region_name='us-east-1')


fdevdb={"Name":"tag:dev","Values":['db']}

InIds=[]

for each_in in ec2_re.instances.filter(Filters=[fdevdb]):

    InIds.append(each_in.id)


print("All required ec2 Instances : ",InIds)


waiter=ec2_cli.get_waiter('instance_running')

#Using resource

#ec2_re.instances.stop(InstanceIds=InIds)

#ec2_re.instances.start(InstanceIds=InIds)

#ec2_re.instances.reboot(InstanceIds=InIds)

#ec2_re.instances.terminate(InstanceIds=InIds)

#Uisng client

#ec2_cli.start_instances(InstanceIds=InIds)

ec2_cli.stop_instances(InstanceIds=InIds)

#ec2_cli.terminate_instances(InstanceIds=InIds)


waiter.wait(InstanceIds=InIds)


EC2-PART-3: Working with EBS Volumes

1
Delete Unused and Untagged EBS Volumes

import boto3                                                                                                             

session=boto3.session.Session(profile_name="dev_root")                                                                   

ec2_re=session.resource(service_name='ec2',region_name='us-east-1')                                                       

                                                                                                                         

ec2_cli=session.client(service_name='ec2',region_name='us-east-1')                                                       

all_required_volume_ids=[]                                                                                               

#List all ebs volumes:                                                                                                   

#febsu={'Name':'status','Values':['available']}                                                                           

#for each_vol in ec2_re.volumes.filter(Filters=[febsu]):                                                                 

for each_vol in ec2_re.volumes.all():                                                                                     

   if each_vol.state=="available" and each_vol.tags==None:                                                               

      print each_vol.id, each_vol.state, each_vol.tags                                                                   

      all_required_volume_ids.append(each_vol.id)                                                                         

                                                                                                                         

#Delete volumes:                                                                                                         

                                                                                                                         

for each_vol in all_required_volume_ids:                                                                                 

    volume_ob=ec2_re.Volume(each_vol)                                                                                     

    #print dir(volume_ob)                                                                                                 

    print "Deleting volume of id ",each_vol                                                                               

    volume_ob.delete()                                                                                                   

                                                                                                                         

waiter = ec2_cli.get_waiter('volume_deleted')                                                                             

try:                                                                                                                     

   waiter.wait(VolumeIds=all_required_volume_ids)                                                                         

   print "Succsffuly deleted all your volumes which are unused and untagged EBS Volumes"                                 

except Exception as e:                                                                                                   

   print e                                                                                                               

                                                                                                                         

IAM Roles to Execute python boto3 scripts

1
Executing Python boto3 script from ec2 instance which is attached with IAM Role

Working with aws using boto3 with an IAM Role / without programmatic access keys.

List_Ec2_instances.py

=================

#!/usr/bin/python                                                                                                         

import boto3                                                                                                             

#session=boto3.session.Session(profile_name="dev_root")                                                                   

#ec2_re=session.resource(service_name="ec2",region_name="us-east-1")                                                     

ec2_re=boto3.resource(service_name="ec2",region_name="us-east-1")                                                         

for each_in in ec2_re.instances.all():                                                                                   

  print each_in.id

--------------------------------------------------------------------------------------------------------------------------                                                                                                       

List_Buckets.py

=============

#!/usr/bin/python                                                                                                         

import boto3                                                                                                             

s3_re=boto3.resource("s3","us-east-1")                                                                                   

for each_bu in s3_re.buckets.all():                                                                                       

   print each_bu.name                                                                                                     

Working with IAM Users

1
Get IAM User Details
2
Simple Error Handling Exceptions while Getting IAM User Details

#!/bin/python                                                                                                             

import boto3                                                                                                             

from pprint import pprint                                                                                                 

iam_user=raw_input("Enter you IAM User name to get datials like ID,ARN,CREATION DATE: ")                                 

session=boto3.session.Session(profile_name="dev_root")                                                                   

iam_re=session.resource(service_name="iam",region_name="us-east-1")                                                       

                                                                                                                         

req_iam_user=iam_re.User(iam_user)                                                                                       

#pprint(dir(req_iam_user))                                                                                               

try:                                                                                                                     

   print "IAM User: EC2_S3_IAM DetatilsnUser Name: {}nUser Id: {}nUser ARN: {}nUser Creation Date: {}".format(req_iam_

user.user_name,req_iam_user.user_id,req_iam_user.arn,req_iam_user.create_date)                                           

except Exception as e:                                                                                                   

  print e.response['Error']['Code']

3
Get All IAM Users Details

#!/bin/python                                                                                                             

import boto3                                                                                                             

session=boto3.session.Session(profile_name="dev_root")                                                                   

'''                                                                                                                       

iam_re=session.resource(service_name="iam",region_name="us-east-1")                                                       

                                                                                                                         

for each_user in iam_re.users.all():                                                                                     

    print "UserName={} UserId={} User ARN={} User Creation Date={}".format(each_user.user_name,each_user.user_id,each_user

.arn,each_user.create_date)                                                                                               

'''                                                                                                                       

iam_cli=session.client(service_name="iam",region_name='us-east-1')                                                       

                                                                                                                         

for each_user in iam_cli.list_users()['Users']:                                                                           

    print each_user['UserName'],each_user['Arn']

4
Get All Groups Info
5
Random Password Generator using Python

We will use this logic while creating IAM users and to assign random password for IAM User



from random import choice


len_of_password=8

valid_chars_for_password="abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()?"


password=[]

'''

for each_char in range(len_of_password):

    password.append(choice(valid_chars_for_password))


random_pass="".join(password)


print random_pass

'''

random_pass="".join(choice(valid_chars_for_password) for each_char in range(len_of_password))

print random_pass

6
Create an IAM User with Console Login access Using boto3 of Python
7
Create an IAM User with programatic Access Keys
8
Create an IAM User with Programatic and AWS Managment Console Login Access
9
Create mutliple IAM Users using python boto3

Inventory Scripts

1
EC2 Instances Inventory

import boto3

import csv

from pprint import pprint

session=boto3.session.Session(profile_name="dev_root")

ec2_re=session.resource(service_name="ec2",region_name="us-east-1")

ec2_cli=session.client(service_name="ec2",region_name="us-east-1")

header_csv=['S_NO','InstanceID','Instance_Type','Instance_Arch']

S_No=1


fo=open("ec2_inv.csv","wb")

csv_w=csv.writer(fo)

csv_w.writerow(header_csv)

for each_in in ec2_re.instances.all():

     In_ID=each_in.instance_id

     In_Type=each_in.instance_type

     In_Arc=each_in.architecture

     print(S_No,In_ID,In_Type,In_Arc)

     csv_w.writerow([S_No,In_ID,In_Type,In_Arc])

     S_No=S_No+1

fo.close()


2
IAM Users Inventory Script

Lambda-PART-1: AWS Automation with boto3 and Lambda Functions

1
Introduction to AWS Lambda Funtions
2
Automating the start and stop EC2 Instances for Test Environment
3
Automatic Mail Alert: When Instance state is reached to Stopped
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don`t have an internet connection, some instructors also let their students download course lectures. That`s up to the instructor though, so make sure you get on their good side!
5
5 out of 5
5 Ratings

Detailed Rating

Stars 5
5
Stars 4
0
Stars 3
0
Stars 2
0
Stars 1
0
7ab48059300259ec824754b14d78b50e
30-Day Money-Back Guarantee

Includes

7 hours on-demand video
5 articles
Full lifetime access
Access on mobile and TV
Certificate of Completion