如何使用python boto modify_lb_attribute启用connectiondraining

时间:2014-08-02 19:56:10

标签: python amazon-ec2 boto

我一直在尝试使用python boto模块中的modify_lb_attribute方法启用ELB连接耗尽;但是我还没有能够让它运转起来。根据这里的文档http://boto.readthedocs.org/en/latest/ref/elb.html,我应该可以像他一样称呼它:

modify_lb_attribute(load_balancer_name,attribute,value)

以下是一个例子:

modify_lb_attribute('my-elb', 'connectionDraining', 120)

当我这样做时,我收到以下错误:

文件" /Library/Python/2.7/site-packages/boto/ec2/elb/ init .py",第421行,在modify_lb_attribute中     value.enabled和' true'或者' false' AttributeError:' NoneType'对象没有属性'已启用'

我已经能够使用crossZoneLoadBalancing成功地工作。

例如,这有效:

modify_lb_attribute('my-elb', 'crossZoneLoadBalancing', 'true')

任何帮助或建议都将不胜感激。

由于

2 个答案:

答案 0 :(得分:3)

用于实例化ConnectionDrainingAttribute并将其传递给负载均衡器的工作语法:

from boto.ec2.elb.attributes import ConnectionDrainingAttribute
import boto.ec2.elb

connection = boto.ec2.elb.connect_to_region("region") 
cda = ConnectionDrainingAttribute(connection)
cda.enabled = True  
cda.timeout = 120
connection.modify_lb_attribute( 
    load_balancer_name='my-elb',
    attribute='connectionDraining',
    value=cda
)

有关ConnectionDrainingAttribute课程的更多信息,请参阅boto docs

答案 1 :(得分:0)

修改负载均衡器的connectionDraining属性时,实际上可以提供两个值。第一个是boolean,表示您是启用还是禁用连接耗尽功能。第二个是一个整数,表示timeout,只有在启用连接耗尽时才显然适用。

为了允许您指定这两个值,boto在ConnectionDrainingAttribute中定义了boto.ec2.elb.attributes类。您必须将此类的实例作为值传递给modify_elb_attribute,例如:

from boto.ec2.elb.attributes import ConnectionDrainingAttribute

cda = ConnectionDrainingAttribute()
cda.enabled = True
cda.timeout = 120
...
modify_lb_attribute('my-elb', cda)