【问题标题】:How to filter Tag keys using aws boto3 starting with 'aws:' in ec2.describe_tags?如何使用 ec2.describe_tags 中以“aws:”开头的 aws boto3 过滤标签键?
【发布时间】:2017-08-28 13:19:45
【问题描述】:

我们正在使用以下 python 代码来获取与 ebs 卷关联的所有标签,并将它们传输回与该 ebs 卷关联的快照。我们想从输出中排除 aws: 保留标签,以便我们可以直接应用它们。

import boto3
ec2 = boto3.client('ec2')
volume_tags = ec2.describe_tags(Filters=[{'Name': 'resource-id', 'Values': ['volume-id',],},],)
tag_snapshot = ec2.create_tags(Resources=[snapshot-id],Tags=volume_tags)

【问题讨论】:

  • 你的问题不清楚。在describe_tags,您要排除保留标签吗?
  • 抱歉造成混淆,是的,来自 describe_tags 操作,我试图排除 aws 保留标签,例如......“aws:cloudformation:stack-id”
  • describe_tags 内部没有进一步的逻辑/正则表达式过滤器构建。但是,您可以将结果传递给paginators 并在那里进行更复杂的过滤。 boto3.readthedocs.io/en/latest/guide/paginators.html

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


【解决方案1】:

您可以使用带有 aws cli 的“jq”程序来过滤 json 结果,如下所示

aws ec2 describe-tags | jq '.Tags[] | select(contains({Key: "aws:"}) | not)'

可能使用子进程从python执行上述命令

不幸的是,我无法使用 jq 的 python 绑定来尝试相同的操作。

jq 或 pyjq python 绑定在我使用 pip 时出现安装问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2019-02-25
    • 2019-06-17
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多