http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#service-resource

June 30, 2017 ยท View on GitHub

import boto3

http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#service-resource

ec2 = boto3.resource('ec2', aws_access_key_id='AWS_ACCESS_KEY_ID', aws_secret_access_key='AWS_SECRET_ACCESS_KEY', region_name='us-west-2')

create VPC

vpc = ec2.create_vpc(CidrBlock='192.168.0.0/16')

we can assign a name to vpc, or any resource, by using tag

vpc.create_tags(Tags=[{"Key": "Name", "Value": "default_vpc"}]) vpc.wait_until_available() print(vpc.id)

create then attach internet gateway

ig = ec2.create_internet_gateway() vpc.attach_internet_gateway(InternetGatewayId=ig.id) print(ig.id)

create a route table and a public route

route_table = vpc.create_route_table() route = route_table.create_route( DestinationCidrBlock='0.0.0.0/0', GatewayId=ig.id ) print(route_table.id)

create subnet

subnet = ec2.create_subnet(CidrBlock='192.168.1.0/24', VpcId=vpc.id) print(subnet.id)

associate the route table with the subnet

route_table.associate_with_subnet(SubnetId=subnet.id)

Create sec group

sec_group = ec2.create_security_group( GroupName='slice_0', Description='slice_0 sec group', VpcId=vpc.id) sec_group.authorize_ingress( CidrIp='0.0.0.0/0', IpProtocol='icmp', FromPort=-1, ToPort=-1 ) print(sec_group.id)

find image id ami-835b4efa / us-west-2

Create instance

instances = ec2.create_instances( ImageId='ami-835b4efa', InstanceType='t2.micro', MaxCount=1, MinCount=1, NetworkInterfaces=[{'SubnetId': subnet.id, 'DeviceIndex': 0, 'AssociatePublicIpAddress': True, 'Groups': [sec_group.group_id]}]) instances[0].wait_until_running() print(instances[0].id)