【问题标题】:Do ec2 tag numbers change?ec2 标签号会改变吗?
【发布时间】:2017-01-02 12:58:51
【问题描述】:

下面是一些简单的代码。什么应该拉关键:名称标签。但是,当我添加第二个标签时,它似乎改变了顺序,所以 0 并不总是名称???

instances = ec2.instances.filter(Filters=[{'Name':'instance-state-name','Values':['running']}])
    for instance in instances:
        for tag in instance.tags:
            if 'Name'in tag['Key']:
                name = tag['Value']
    print "Pulling all instance info..."
    for instance in instances:
        print(instance.id, instance.instance_type,instance.private_ip_address, instance.tags[0].get("Value"))

【问题讨论】:

  • tag numbers 是什么意思?如果您需要实例的唯一标识符,请使用 instance id。它保持不变并且每个实例都是唯一的

标签: python amazon-web-services amazon-ec2 boto3


【解决方案1】:

是的。 instance.tags 是一个列表,您的标签可以出现在列表中的任何位置。如果您尝试获取“名称”,则必须遍历列表。列表中的每个元素都是一个字典。在获取值之前检查键是否为“名称”。

这听起来很复杂,但代码非常简单。不能盲目做instance.tags[0].get("Value")

【讨论】:

  • 啊。所以 0 只有在有一个标签时才有效。知道了。知道这看起来正确吗?
  • 类似的东西。请参阅我对此的回答:stackoverflow.com/questions/34751794/…
  • 所以我尝试了这个,并使用列出的示例将变量保留为最后一个实例名称(nametag = instread of print)。
  • 将列表转换为字典并按名称访问标签
猜你喜欢
  • 2020-09-11
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多