0

私はTroposphereを使用して CloudFormation スタックを構築していますが、構成で設定されている場合にのみ Elastic Load Balancer 属性を渡しConnectionSettingsたいと考えています。それ以外の場合は指定したくありません。

デフォルトに設定するとNone、値が期待される型ではないというエラーが表示されtroposphere.elasticloadbalancing.ConnectionSettingsます。

他の設定を上書きする可能性があるため、呼び出しで明示的なデフォルトを設定することは避けたいと思います。

理想的には、既存のオブジェクトに属性を追加できるようにしたいと考えています。

lb = template.add_resource(elb.LoadBalancer(
  ...
))

if condition:
  lb.add_attribute(ConnectionSettings = elb.ConnectionSettings(
    ...
  ))

それを達成する方法はありますか?

更新:私は隠しTroposphereメソッドを使用してそれを達成しましたが、これは機能しますが、満足していません:

if condition:
  lb.__setattr__('ConnectionSettings', elb.ConnectionSettings(
    ....
  ))

モジュールの外部からのプライベート メソッドの使用を伴わないソリューションにまだ興味があります。

4

3 に答える 3

1

メインの README は、次のような属性名を使用することを避けています。

from troposphere import Template
import troposphere.elasticloadbalancing as elb

template = Template()
webelb = elb.LoadBalancer(
    'ElasticLoadBalancer',
    Listeners=[
        elb.Listener(
            LoadBalancerPort="80",
            InstancePort="80",
            Protocol="HTTP",
        ),
    ],
)

if True:
    webelb.ConnectionSettings = elb.ConnectionSettings(IdleTimeout=30)
elasticLB = template.add_resource(webelb)
print(template.to_json())
于 2015-11-27T01:22:46.040 に答える