aws ec2 描述实例并获取超过 90 天前的实例,输出实例 ID、启动时间和标签名称值

问题描述 投票:0回答:1

我正在尝试编写一个 JMSEpath 查询来返回 90 天前的实例列表,返回实例 ID 号、启动 Tine 和实例标签名称(如果不为空)。

我可以获得实例 ID 和启动时间,但是当我添加 Tags 键和值时,它只返回标签名称值。见下文。

aws ec2 describe-instances \
    --query "Reservations[].Instances[?LaunchTime<='$(date --date='-90 days' '+%Y-%m-%d')']" | \
    jq .[][] | jq -r '. | .InstanceId + " " + .Name + " " + .LaunchTime'

i-0d1b4afee437442a4  2023-02-25T03:17:00+00:00
i-0e2464a16b9e6b1af  2023-10-19T18:44:34+00:00  

aws ec2 describe-instances \
    --instance-ids i-0d1b4afee437442a4 \
    --query "Reservations[*].Instances[?LaunchTime<='$(date --date='-90 days' '+%Y-%m-%d')'].[ Tags[?Key=='Name'].Value][0][0]"

[
    [
        "MDM-server-01"
    ]
]
amazon-web-services jq jmespath
1个回答
0
投票

假设您确实正在寻找传递给 jq 的参数,该参数将为您提供 InstanceName、LaunchTime 和标签,您的第一个 aws 命令会提供您需要的一切,您只需调整 jq 命令即可提取这些值。以下对我有用:

$ aws ec2 describe-instances --query "Reservations[].Instances[?LaunchTime<='$(date --date='-90 days' '+%Y-%m-%d')']" | jq -r '.[] | .[] | (.InstanceId + "," + .LaunchTime) + "," + (.Tags[] | .Key + "=" + .Value)'
i-08e56acf,2020-04-12T11:37:18+00:00,RemoveNote=DoNotDelete
i-08e56acf,2020-04-12T11:37:18+00:00,AlwaysOn=True
i-08e56acf,2020-04-12T11:37:18+00:00,Name=AD-US

请注意,我在字段之间放置了逗号(“,”),并在键与其值之间放置了等号(“=”)。

© www.soinside.com 2019 - 2024. All rights reserved.