Skip to content
An interactive Amazon webservices shell
Python
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ami
iboto
scripts
.gitignore
LICENSE
MANIFEST.in
README
README.markdown
iboto.komodoproject
setup.py

README.markdown

iboto - an interactive Amazon webservices shell

Introduction

iboto offers an interactive shell with the basic set of ec2 commands from the Amazon command line tools, on steroids!

It adds:

  • multiple account support

  • multiple region support

  • powerful filtering

  • tab-completion on arguments:

    • amis

    • instance ids

    • tags

    • zones

    • instance types, etc.

    Saving much fiddly copy-pasting of ids around.

  • much snappier

    Without having to load all of Java up first before running a command you'll see it's much snappier controlling instances compared to the Amazon tools (as great as they are!).

  • extra functionality:

    • ec2ssh - waits for the instance to be running and SSH to be available before connecting; all without having to find and copy the public dns name, guess when it's booted fully or even open a new terminal for SSH.

    • ec2watch - closely monitor what is happening to your instances whilst you're waiting.

  • all the nice features of ipython

    History recall, python integration, session recording, configurability, etc.

It's probably best illustrated with a demo session::

~ % iboto
iboto ready

Commands available:
%ec2din  (aka ls)
%limit   (aka .)
%pop     (aka ..)
%ec2ssh
%ec2run
%ec2start
%ec2stop
%ec2kill
%ec2watch
%account
%region

'%command?' for more information.

demo1:us-east-1,demo2:eu-west-1
[1]: limit Role:demo

demo1:us-east-1,demo2:eu-west-1 Role:demo
[2]: ec2run -T Role:demo
account (demo1,demo2): demo1
region: us-east-1
instance type (m1.small,m1.large,m1.xlarge,c1.medium,c1.xlarge,m2.xlarge,m2.2xlarge,m2.4xlarge,cc1.4xlarge,t1.micro): t1.micro
number [1]: 
key: default
security group (default) [default]: 
zone (us-east-1a,us-east-1b,us-east-1c,us-east-1d,us-east-1e) [default]: 
arch (i386,x86_64) [x86_64]: 
ebs: yes
ami (lucid,maverick,natty,oneiric,precise,ami-xxxxxx): lucid
tags: Role:demo
Out[2]: <Result: success, Instances: i-63f38e07>

demo1:us-east-1,demo2:eu-west-1 Role:demo i-63f38e07
[3]: ec2ssh
Instance i-63f38e07
Waiting for i-63f38e07 pending->running... (Ctrl+C to abort)
Waiting for i-63f38e07 SSH port... (Ctrl+C to abort)
Connecting to ec2-107-21-194-97.compute-1.amazonaws.com... (Ctrl+C to abort)
The authenticity of host 'ec2-107-21-194-97.compute-1.amazonaws.com (107.21.194.97)' can't be established.
RSA key fingerprint is e7:fe:c9:a9:bb:cc:ca:88:f1:26:0d:86:b0:b7:9d:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-107-21-194-97.compute-1.amazonaws.com,107.21.194.97' (RSA) to the list of known hosts.
Linux domU-12-31-38-01-A9-1C 2.6.32-342-ec2 #43-Ubuntu SMP Wed Jan 4 18:22:42 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to Ubuntu!
...
ubuntu@domU-12-31-38-01-A9-1C:~$ logout
Connection to ec2-107-21-194-97.compute-1.amazonaws.com closed.
Out[3]: 'i-63f38e07'

demo1:us-east-1,demo2:eu-west-1 Role:demo i-63f38e07
[4]: ..

demo1:us-east-1,demo2:eu-west-1 Role:demo
[5]: ec2run -T Role:demo
account (demo1,demo2): demo2
region: eu-west-1
instance type (m1.small,m1.large,m1.xlarge,c1.medium,c1.xlarge,m2.xlarge,m2.2xlarge,m2.4xlarge,cc1.4xlarge,t1.micro): t1.micro
number [1]: 
key: default
security group (default) [default]: 
zone (eu-west-1a,eu-west-1b,eu-west-1c) [default]: 
arch (i386,x86_64) [x86_64]: 
ebs: yes
ami (lucid,maverick,natty,oneiric,precise,ami-xxxxxx): lucid
tags: Role:demo
Out[5]: <Result: success, Instances: i-3affcd73>

demo1:us-east-1,demo2:eu-west-1 Role:demo i-3affcd73
[6]: ..

demo1:us-east-1,demo2:eu-west-1 Role:demo
[7]: ls
account instance    state    type      zone        ami           launch time       name
=======================================================================================
demo1 i-63f38e07  running  t1.micro  us-east-1d  ami-349b495d  2012-03-18 17:35  
demo2 i-3affcd73  pending  t1.micro  eu-west-1b  ami-fb665f8f  2012-03-18 17:36  

demo1:us-east-1,demo2:eu-west-1 Role:demo
[8]: ec2watch
Watching 2 instance(s) (press Ctrl+C to end)
 i-3affcd73  state: pending->running
^C
demo1:us-east-1,demo2:eu-west-1 Role:demo
[9]: I.public_dns_name
Out[9]: 
[u'ec2-107-21-194-97.compute-1.amazonaws.com',
 u'ec2-176-34-173-80.eu-west-1.compute.amazonaws.com']

demo1:us-east-1,demo2:eu-west-1 Role:demo
[10]: I.placement
Out[10]: [u'us-east-1d', u'eu-west-1b']

demo1:us-east-1,demo2:eu-west-1 Role:demo
[11]: I.add_tag('MyTag', '123')
This will add_tag 2 instances, ok? (y/N) y
Out[11]: <Result: success, Instances: i-63f38e07, i-3affcd73>

demo1:us-east-1,demo2:eu-west-1 Role:demo
[12]: I.tags
Out[12]: 
[{u'MyTag': u'123', u'Role': u'demo'},
 {u'MyTag': u'123', u'Role': u'demo'}]

demo1:us-east-1,demo2:eu-west-1 Role:demo
[13]: limit MyTag:123

demo1:us-east-1,demo2:eu-west-1 MyTag:123
[14]: I.add_volume(1, '/dev/sdf')
Creating and attaching volumes...
Created 2 volumes

demo1:us-east-1,demo2:eu-west-1 MyTag:123
[15]: ec2ssh latest
Instance i-3affcd73
Connecting to ec2-176-34-173-80.eu-west-1.compute.amazonaws.com... (Ctrl+C to abort)
The authenticity of host 'ec2-176-34-173-80.eu-west-1.compute.amazonaws.com (176.34.173.80)' can't be established.
RSA key fingerprint is c9:cc:8b:fe:bc:8b:59:6c:3b:0a:07:54:fc:c2:a8:8c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-176-34-173-80.eu-west-1.compute.amazonaws.com,176.34.173.80' (RSA) to the list of known hosts.
Linux ip-10-227-133-146 2.6.32-342-ec2 #43-Ubuntu SMP Wed Jan 4 18:22:42 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
...
ubuntu@ip-10-227-133-146:~$ ls -al /dev/sdf
brw-rw---- 1 root disk 8, 80 2012-03-18 17:38 /dev/sdf
ubuntu@ip-10-227-133-146:~$ logout
Connection to ec2-176-34-173-80.eu-west-1.compute.amazonaws.com closed.
Out[15]: 'i-3affcd73'

demo1:us-east-1,demo2:eu-west-1 MyTag:123
[16]: ec2kill
This will terminate 2 instances, ok? (y/N) y
Out[16]: <Result: success, Instances: i-63f38e07, i-3affcd73>

demo1:us-east-1,demo2:eu-west-1 MyTag:123
[17]: ls
account instance    state    type      zone        ami           launch time       name
=======================================================================================
demo1 i-63f38e07  shutting t1.micro  us-east-1d  ami-349b495d  2012-03-18 17:35  
demo2 i-3affcd73  shutting t1.micro  eu-west-1b  ami-fb665f8f  2012-03-18 17:36  

demo1:us-east-1,demo2:eu-west-1 MyTag:123

Installation

Install with your favourite package manager::

$ pip install iboto

You can then run iboto from your path::

$ iboto

The default is to start the shell with every account/region visible. You can limit to a specific account/region from the command line::

$ iboto demo1 eu-west-1

Configuration

The first time iboto is run you'll be taken through a wizard which will configure the credentials for your account(s).

Help

The best documentation is the command documentation accessed by entering '%command?' at the shell prompt, e.g.::

'%ec2start?'

'%limit?'

Future plans

  • Add the full set of ec2 tools
  • Add further AWS apis.
  • Parallel ec2ssh execution for more than one host.
Something went wrong with that request. Please try again.