首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用对流层形成云,我如何在标记中添加“在启动时传播”

使用对流层形成云,我如何在标记中添加“在启动时传播”
EN

Stack Overflow用户
提问于 2014-12-26 18:57:44
回答 1查看 5.7K关注 0票数 9

我使用python模块troposphere在我的云形成模板中生成标记。当前脚本生成:

代码语言:javascript
复制
       "Tags": [{"Key":"Name", "Value":"MyTagName"}, 
                {"Key":"Version", "Value":"123456"}]

但我需要

代码语言:javascript
复制
       "Tags":[{"Key":"Name", "Value":"MyTagName", "PropagateAtLaunch":"true"},
               {"Key":"Version", "Value":"123456", "PropagateAtLaunch":"true"}]

应用脚本的部分是:

代码语言:javascript
复制
    asg = autoscaling.AutoScalingGroup("MyASG")
    asg.Tags = Tags(Name = "MyTagName", Version = "123456")
    t.add_resource(asg)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-28 22:29:33

--更新

这个特性已经添加到主分支中,我只留下前面的答案供参考,以防您无法访问最新版本的对流层(即,如果您没有克隆存储库)。您仍然可以在代码中使用简短的函数(第三个选项),尽管如此,它还是会工作的。

“标记”帮助类(来自对流层模块)不能生成ASG标记列表(key / value / propagate),只能生成基本标记列表(例如,key/ value -用于EC2 )。您可以使用troposphere.autoscaling.Tags类作为替代,它模仿最新的类,并添加了"propagate“属性。

你可以这样使用它:

代码语言:javascript
复制
    asg.Tags = autoscaling.Tags(Name = 'MyTagName', Version = '123456')

所有标记都将PropagateAtLaunch属性设置为“true”。如果您想要一个不同的PropagateAtLaunch属性,只需这样编写:

代码语言:javascript
复制
    asg.Tags = autoscaling.Tags(Name = 'MyTagName', Version = '123456', 
      NonPropagatedTag=('fail',False))

NonPropagatedTag标记不会被传播(惊喜!)并且有一个‘失败’的价值。

先前的答复:

您不能使用“标记”助手类(来自对流层模块)来生成ASG标记列表(key/value/繁殖),只能使用基本标记列表(key/value)。快速查看源代码将向您展示原因(.py)

它给你留下了三个选择:

  • 长而难的方法: ASG标记列表(在对流层中)只是一个包含三个键的python列表: Name、Value和PropagateAtLaunch。因此,您的代码如下所示: asg.Tags= {'Key':'Name','Value':'MyTagName','PropagateAtLaunch':'true'},{'Key':'Version','Value':'123456','PropagateAtLaunch':'true'} 是的丑八怪。
  • 稍微短一点:您可以使用autoscaling.Tag助手类来代替dicts,它接受3个参数: tag键、标记值、传播。您必须编写以下代码: asg.Tags= autoscaling.Tag(“名称”、“MyTagName”、“true”)、autoscaling.Tag(“版本”、“123456”、“真”) 如果你没有很多标签,或者只在一个地方使用,那就没问题了。但是标签帮助者类太好了..。
  • 使用另一个助手类生成ASG特定的标记列表。我刚刚在troposphere github存储库上完成了一个拉请求,以实现这个小小的添加: 类TagsASG(troposphere.AWSHelperFn):defaultPropagateAtLaunch=True manyType=[type( [] ),type(())] def __init__(self,**kwargs):self.tags =[] for k,v在排序(kwargs.iteritems())中:如果在self.manyType中键入(V):propagate=str(v1).lower() v=v propagate=str:v=v self.tags.append({ 'Key':k,'Value':v),‘'PropagateAtLaunch':propagate,}) def JSONrepr(self):返回self.tags

现在,您可以这样使用它:

代码语言:javascript
复制
    asg.Tags = TagsASG(Name = 'MyTagName', Version = '123456')

所有标记都将PropagateAtLaunch属性设置为“true”。如果您想要一个不同的PropagateAtLaunch属性,只需这样编写:

代码语言:javascript
复制
    asg.Tags = TagsASG(Name = 'MyTagName', Version = '123456', 
      NonPropagatedTag=('fail',False))

NonPropagatedTag标记不会被传播(惊喜!)并且有一个‘失败’的价值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27660840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档