【问题标题】:How to Filter Instances by Checking for a String in the Instance Name如何通过检查实例名称中的字符串来过滤实例
【发布时间】:2018-07-07 07:51:03
【问题描述】:

我正在编写一个 python 脚本来检索被错误标记的实例列表。我需要通过检查名称中是否存在特定字符串来进行过滤。

最好的方法是什么?

我打算使用 describe_instances 并使用标签过滤器(其中键是“名称”),但该过滤器要求我提供标签的完整值(即实例名称),但我需要能够搜索使用名称的子集。

这可以使用客户端完成吗?

【问题讨论】:

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


    【解决方案1】:

    最简单的方法是在没有过滤器的情况下调用describe_instances(),然后只需循环遍历结果并在 Python 中执行您自己的过滤和修复逻辑。

    一般逻辑是:

    Create EC2 client
    Call describe_instances
    Loop through results['Reservations']['Instances']:
      Loop through instance['Tags']:
        if Key == 'Name' and "bad-string" in Value:
          Fix tag
    

    如果您有超过 1000 个实例,则必须使用 NextToken 重新调用 describe-instances()

    【讨论】:

    • 谢谢约翰!是的,这可行,但在我的情况下,我有大量实例(超过 15k),因此效率不高。在进行了一些我认为也可以很好地工作的研究之后,我在下面发布了另一个解决方案,使用过滤器并使用通配符“*”。
    【解决方案2】:

    对于正在阅读本文的人,您可以按照 John Rotenstein 在他的回答中建议的操作,或者,您也可以在标签名称中使用通配符“*”,因此您的过滤器将类似于:

    filters = [{'Name':'tag:Name', 'Values':['string*']}]
    

    【讨论】:

      猜你喜欢
      • 2014-06-04
      • 2019-06-25
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      相关资源
      最近更新 更多