Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何访问AWS';使用结构的动态EC2库存?_Python_Amazon Web Services_Fabric_Ansible Inventory - Fatal编程技术网

Python 如何访问AWS';使用结构的动态EC2库存?

Python 如何访问AWS';使用结构的动态EC2库存?,python,amazon-web-services,fabric,ansible-inventory,Python,Amazon Web Services,Fabric,Ansible Inventory,Fabric有一个设置来指定要SSH连接到的计算机 AmazonWeb服务有更多的动态资源清册,可以使用python中的工具(如)进行查询 有没有办法将这两种服务结合起来?理想情况下,我想要一些简单的东西,比如使用一个清单文件和一个外部文件 更具体地说,这个用例是否有预烘焙的解决方案?理想情况下,我希望运行这样简单的操作: from fabric.api import env, task import ec2 env.roledefs = ec2.Inventory() @task def c

Fabric有一个设置来指定要SSH连接到的计算机

AmazonWeb服务有更多的动态资源清册,可以使用python中的工具(如)进行查询

有没有办法将这两种服务结合起来?理想情况下,我想要一些简单的东西,比如使用一个清单文件和一个外部文件

更具体地说,这个用例是否有预烘焙的解决方案?理想情况下,我希望运行这样简单的操作:

from fabric.api import env, task
import ec2
env.roledefs = ec2.Inventory()

@task
def command():
    run("lsb_release -a")
并像这样运行它,假设存在
env.roledefs['nginx']

$ fab -R nginx command

你可以看到,如果你设置 env.hosts=['my_server1'、'my_server2']

然后,您将能够以这些主机为目标

对于boto,如果你有一个函数 ec2_连接。仅获取__实例(筛选器={'tag':) 并返回他们的dns名称列表,然后您可以设置 env.hosts=[<来自ec2的dns名称列表>]


小菜一碟

您可以同时使用fabric和boto。 首先,您需要从控制台导出aws_secret_密钥、aws_secret_access_密钥和默认区域。结构文件名应为fabfile.py,而不应为ec2.py/other

import boto, urllib2
from   boto.ec2 import connect_to_region
from   fabric.api import env, run, cd, settings, sudo
from   fabric.api import parallel
import os
import sys
REGION       = os.environ.get("AWS_EC2_REGION")
env.user      = "ec2-user"
env.key_filename = ["/home/user/uswest.pem"]
@task
def command():
    run("lsb_release -a")
def _create_connection(region):
    print "Connecting to ", region
    conn = connect_to_region(
        region_name = region, 
        aws_access_key_id=os.environ.get("AWS_ACCESS_KEY_ID"), 
        aws_secret_access_key=os.environ.get("AWS_SECRET_ACCESS_KEY")
    )
    print "Connection with AWS established"
    return connection
最后,使用下面的命令可以执行这个程序

$ fab command
你是从哪里得到这个的?看起来很有用,但我得好好玩玩。