Wyszukaj instancję ec2 według nazwy z narzędzia wiersza polecenia aws

32

Mam instancję o nazwie dev-server-03. Jak mogę teraz wyszukiwać wszystkie dev-server-*wystąpienia z wiersza poleceń?

Korzystam z narzędzia aws cli.

Shiplu Mokaddim
źródło
To zależy od tego, jak nazwałeś instancję. Czy ustawiłeś nazwę hosta w systemie operacyjnym, na konsoli AWS lub na obu?
Craig Watson,
Tak, w nazwie hosta systemu operacyjnego jest ustawiona ta sama nazwa.
Shiplu Mokaddim,

Odpowiedzi:

55

Zakładając, że stosujesz konwencję umieszczania nazwy instancji w tagu z kluczem „Nazwa” (tak właśnie robi konsola AWS po wprowadzeniu nazwy), możesz użyć --filtersopcji, aby wyświetlić listę instancji z aws-cli:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*'

Jeśli chcesz tylko identyfikatorów instancji tych instancji, możesz użyć:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*' \
  --output text --query 'Reservations[*].Instances[*].InstanceId'

Uwaga: --querymoże wymagać najnowszej wersji aws-cli, ale warto ją zdobyć.

Eric Hammond
źródło
1
Omg, zajęło mi to prawie pół godziny, żeby to Name=tag:Name
rozgryźć
1
Dzięki Eric - uzyskiwałem wiele identyfikatorów instancji w tym samym wierszu, używając twojego zapytania, ale github.com/aws/aws-cli/issues/914#issuecomment-56210312 zasugerował, --query 'Reservations[].Instances[].[InstanceId]które działa dla mnie
jaygooby
3
FWIW, jqmożna użyć tego narzędzia, aby uzyskać podobne wyniki aws --queryjak poniżej: - aws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'Uwaga na poprzednią .kropkę.
MarkHu,
czy potrafisz sprawić, by filtry opisów nie rozróżniały wielkości liter?
red888
3

Możesz dalej filtrować według nazwy, identyfikatora instancji i prywatnego adresu IP poniżej,

aws ec2 describe-instances --filters "Name=tag:Name,Values=*myinstance*" --output json --query 'Reservations[*].Instances[*].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value]' --region us-east-1
Siva Prasad Koka
źródło