我正在使用boto(http://docs.pythonboto.org/en/latest/),并希望在连接到弹性beanstalk时以编程方式选择区域。到目前为止,我能够想到的只有:
import boto
from boto.beanstalk.layer1 import Layer1
Layer1.DefaultRegionName = 'us-west-1'
Layer1.DefaultRegionEndpoint = 'elasticbeanstalk.us-west-1.amazonaws.com'
ebs = boto.connect_beanstalk()
虽然我理论上可以打电话
boto.connect_beanstalk(region=<something>)
我无法想象如何构建一个boto.regioninfo.RegionInfo,这显然是Layer1类所期望的。
答案 0 :(得分:1)
这对我来说肯定是个错误 - 但仔细看看代码,看起来RegionInfo上的连接参数从未使用过。在构造你自己的RegionInfo然后将它传递给构造函数时将它设置为None似乎对我有效。
regionInfo = boto.regioninfo.RegionInfo(None, 'us-west-1', 'elasticbeanstalk.us-west-1.amazonaws.com')
beanstalk = boto.connect_beanstalk(region=regionInfo)
mt.describe_applications()
对于它的价值,我非常确定在建立连接时只使用了完整的区域端点参数 - 例如“elasticbeanstalk.us-west-1.amazonaws.com”
答案 1 :(得分:0)
我这样做的方式是使用connect_to_region
,如下所示:
import boto
ebs = boto.beanstalk.connect_to_region('us-west-1')
这将负责正确初始化(和缓存)所需的RegionInfo
个对象。