2014-03-04 31 views
1

我在学习结构。我想实现以下:ssh到我的EC2机器和ls的主目录Python使用结构连接到EC2实例

我已经开始有以下:

from boto import ec2 

from fabric.colors import green as _green, yellow as _yellow 


class EC2Conn: 
    def __init__(self): 
     print(_green("Started...")) 
     self.ec2conn = None 
     self.user = 'fabUser' 
     self.access_key = 'xxxx' 
     self.secret_key = 'xxxx' 

    def connect(self): 
     print(_green("Connecting...")) 
     ec2.connect_to_region("eu-west-1a") 
     self.ec2conn = ec2.connection.EC2Connection(self.access_key, self.secret_key) 

     print(self.get_instances()) 


    def get_instances(self): 
     return self.ec2conn.get_all_instances() 


def run_me(): 
    a = EC2Conn() 
    a.connect() 

但是,这给了我一个空白列表[]我有1个实例中运行的,所以这是不正确。

+0

它显示任何错误? –

+0

没有错误,它与细节连接,但显示并清空[]。当它应该有2个实例。我设置了一个新用户并赋予它们正确的权限(完全管理) – Prometheus

回答

2

尝试改变点点在你的代码如下

self.ec2conn = ec2.connect_to_region('eu-west-1', 
        aws_access_key_id=self.access_key, 
        aws_secret_access_key=self.secret_key) 

print(self.get_instances()) 

或者

region = ec2.get_region('eu-west-1') 
self.ec2conn = ec2.connection.EC2Connection(self.access_key, 
        self.secret_key, region=region) 

print(self.get_instances()) 

记住ec2.connect_to_regionec2.connection.EC2Connection都返回ec2.connection.EC2Connection对象。请参考here

+0

顶级代码给我NoneType'对象没有属性'get_all_instances',第二个没有相同的[]空白 – Prometheus

+0

你检查了区域吗?这是对的吗?用aws控制台检查它。 –

+0

在控制台中,它声明实例的可用区域是eu-west-1a。 – Prometheus