我正在学习Fabric。我想要实现以下目标:通过 ssh 进入我的 EC2 计算机并 ls 主目录。
我从以下开始:
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 个实例正在运行,所以这是不正确的。
最佳答案
尝试在代码中进行一些更改,如下所示
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_region
和 ec2.connection.EC2Connection
均返回 ec2.connection.EC2Connection
对象。请参阅here
关于Python 使用 Fabric 连接到 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169754/