AWS CLI - AWS ec2 描述实例,用于检索每个 EC2 实例的密钥对 mame



我正在尝试查询附加到每个EC2实例的密钥对名称,下面的ec2描述实例工作正常,它完全符合我的需要,但是{keypair.名称} 显示 [无] 我不确定我是否使用了正确的参数名称 - 我知道当我登录到控制台时,我的 EC2 实例上附加了很少的 keypairNames.epm,但我在报告中没有看到我通过以下命令运行。任何意见都非常感谢。感谢!

aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value | [0],InstanceId,Platform,State.Name,PrivateIpAddress,PublicIpAddress,InstanceType,PublicDnsName,keypair.Name]' --output table --region us-west-2

Instances字典中没有名为keypair的字段。

最接近的是KeyName

{
    "Reservations": [
        {
            "Instances": [
                {
                    "InstanceId": "i-xxx", 
                    "KeyName": "foo", 
...

因此,您将使用:

aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value | [0],InstanceId,Platform,State.Name,PrivateIpAddress,PublicIpAddress,InstanceType,PublicDnsName,KeyName]'

请参阅:描述实例 — AWS CLI 命令参考

我确实找到了一种通过使用管道来解决这个问题的方法。 经验: | 排序 -K5

请注意,在我使用 {sort} 之前,报告在 PLATFORM 列下的所有位置都有 {windows} 和 {None}。请参阅附件,我上传了报告的示例结果..

新语句如下所示:

aws ec2 describe-instances --filters Name=instance-state-name,Values=running --query 'Reservations[].Instances[].[Tags[?Key==`Name`].Value | [0],InstanceId,Platform,State.Name,PrivateIpAddress,PublicIpAddress,InstanceType,KeyName]' --output table | sort -k5

报告显示按平台在ASC顺序排序

我出于几个原因执行以下操作

  • 它可以很容易地通过管道传输到 grep
  • 如果您想改进数据,则无需重复查询 AWS API
  • 我通常要迭代多个区域,因此可以轻松扫描所有区域(和帐户)
instances=`aws ec2 describe-instances `
echo $instances | jq '.Reservations[].Instances[] | "[(.InstanceId) (.Platform) (.State.Name) (.PrivateIpAddress) (.PublicIpAddress) (.InstanceType) (.PublicDnsName) (.KeyName)]"'

最新更新