AWS CLI - aws ec2 описывают экземпляры, чтобы получить маску пары ключей для каждого экземпляра EC2 - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь запросить имена пар ключей, которые прикреплены к каждому экземпляру EC2, описанные ниже экземпляры ec2 работают нормально, он выполняет именно то, что мне нужно, но в столбце {keypair.Name} отображается [НЕТ].Я не уверен, что использую правильное имя параметра - я знаю, что при моих входах в консоль на моих экземплярах 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

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Я нашел способ разобраться с этим, используя трубу. опыт: | сортировка -k5

Обратите внимание, что до того, как я использовал {sort}, в отчете было {windows} и {None} по всему месту под столбцом PLATFORM. Пожалуйста, смотрите прикрепленный, я загрузил образец результата моего отчета ..

Новое утверждение выглядит так:

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

Отчет показывает, что отсортировано по PLATFORM IN Asc order

0 голосов
/ 24 января 2019

Я делаю следующее по нескольким причинам

  • это может быть легко передано grep
  • вам не нужно повторно запрашивать API-интерфейсы AWS, если вы хотите улучшить свои данные
  • У меня есть несколько регионов, которые я обычно перебираю, так что это облегчает сканирование всех регионов (и учетных записей)
instances=`aws ec2 describe-instances `
echo $instances | jq '.Reservations[].Instances[] | "[\(.InstanceId) \(.Platform) \(.State.Name) \(.PrivateIpAddress) \(.PublicIpAddress) \(.InstanceType) \(.PublicDnsName) \(.KeyName)]"'
0 голосов
/ 22 января 2019

В словаре 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

...