Use Moto as EC2 backend¶
This tutorial explains moto.ec2
‘s features and how to use it. This
tutorial assumes that you have already downloaded and installed boto and moto.
Before all code examples the following snippet is launched:
>>> import boto.ec2, moto
>>> mock_ec2 = moto.mock_ec2()
>>> mock_ec2.start()
>>> conn = boto.ec2.connect_to_region("eu-west-1")
Launching instances¶
After mock is started, the behavior is the same than previously:
>>> reservation = conn.run_instances('ami-f00ba4')
>>> reservation.instances[0]
Instance:i-91dd2f32
Moto set static or generate random object’s attributes:
>>> vars(reservation.instances[0])
{'_in_monitoring_element': False,
'_placement': None,
'_previous_state': None,
'_state': pending(0),
'ami_launch_index': u'0',
'architecture': u'x86_64',
'block_device_mapping': None,
'client_token': '',
'connection': EC2Connection:ec2.eu-west-1.amazonaws.com,
'dns_name': u'ec2-54.214.135.84.compute-1.amazonaws.com',
'ebs_optimized': False,
'eventsSet': None,
'group_name': None,
'groups': [],
'hypervisor': u'xen',
'id': u'i-91dd2f32',
'image_id': u'f00ba4',
'instance_profile': None,
'instance_type': u'm1.small',
'interfaces': [NetworkInterface:eni-ed65f870],
'ip_address': u'54.214.135.84',
'item': u'\n ',
'kernel': u'None',
'key_name': u'None',
'launch_time': u'2015-07-27T05:59:57Z',
'monitored': True,
'monitoring': u'\n ',
'monitoring_state': u'enabled',
'persistent': False,
'platform': None,
'private_dns_name': u'ip-10.136.187.180.ec2.internal',
'private_ip_address': u'10.136.187.180',
'product_codes': [],
'public_dns_name': u'ec2-54.214.135.84.compute-1.amazonaws.com',
'ramdisk': None,
'reason': '',
'region': RegionInfo:eu-west-1,
'requester_id': None,
'root_device_name': None,
'root_device_type': None,
'sourceDestCheck': u'true',
'spot_instance_request_id': None,
'state_reason': None,
'subnet_id': None,
'tags': {},
'virtualization_type': u'paravirtual',
'vpc_id': None}