【问题标题】:Output account number with instance ID in mass query批量查询输出账号和实例ID
【发布时间】:2022-01-28 03:57:04
【问题描述】:

我需要生成一个不包含特定标签的 AWS 实例列表。这些实例分布在多个帐户中。

我已经完成了查找和输出符合我的条件的实例的部分,但我不知道如何让帐户也输出到文件中。

这是我目前的脚本:

    $aws_accounts = 
    <list of accounts>

foreach ($account in $aws_accounts) {
    aws --profile $account ec2 describe-instances --output text --region us-east-1 --query 'Reservations[].Instances[?!not_null(Tags[?Key == `tag`].Value)] | [].[InstanceId, OwnerID]' >> c:\temp\file.csv
}

AWS 文档让我相信我可以添加“OwnerID”,如此处所示,但它只给了我实例 ID 和“无”。

诚然,我对查询的语法并不是特别熟悉。 This page 演示了我正在尝试做的事情,但我无法弄清楚。

【问题讨论】:

    标签: amazon-web-services powershell aws-cli


    【解决方案1】:

    ec2 describe-instances 命令返回一个保留列表。每个 Reservation 对象都有一个 Instances 列表。在此列表中,您可以找到有关 EC2 实例的信息,例如 InstanceId、Image Id。但是 OwnerId 不在实例列表中,而是在 Reservations 列表中。这就是命令输出将 Owner 显示为 None 的原因。

    要获取 Reservation OwnerId(适用于该 Reservation 的所有实例),您需要指定上一级的字段:

    aws ec2 describe-instances --output text --region us-east-1 --query 'Reservations[].[OwnerId, Instances[?!not_null(Tags[?Key == `tag`].Value)].InstanceId]'
    

    参考:

    AWS CLI describe-instances

    AWS CLI Filtering

    【讨论】:

    • 谢谢!您的解决方案会生成帐户 ID,但它会为每个实例输出它,而不仅仅是我需要的实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2020-05-18
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多