AWSコマンドラインツールから名前でEC2インスタンスを検索する


32

という名前のインスタンスがありますdev-server-03dev-server-*コマンドラインからすべてのインスタンスを検索するにはどうすればよいですか?

AWS CLIツールを使用しています。


これは、インスタンスの命名方法によって異なります。ホスト名はOS内、AWSコンソール、またはその両方に設定しましたか?
クレイグワトソン

そう、OSホスト名の内部は同じ名前に設定されています。
シプルモカディム13

回答:


55

「名前」のキーを持つタグにインスタンスの名前を置くという慣習を使用していると仮定すると(これは名前を入力したときにAWSコンソールが行うことです)、--filtersオプションを使用してそれらのインスタンスを一覧表示できますaws-cli:

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

それらのインスタンスのインスタンスIDだけが必要な場合は、次を使用できます。

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

注:--queryaws-cliの最新バージョンが必要な場合がありますが、入手する価値はあります。


1
これを理解するのにほぼ30分かかりました...これはどれほど奇妙なことですName=tag:Name
。– lisak

1
エリックに感謝-私はあなたのクエリを使用して同じ行に複数のインスタンスIDを取得していましたが、github.com / aws / aws--query 'Reservations[].Instances[].[InstanceId]
cli / issues / 914#issuecomment

3
FWIW、このjqツールを使用して、次のaws --queryような同様の結果を得ることができますaws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'。-先行する.ドットに注意してください。
-MarkHu

記述インスタンスフィルターで大文字と小文字を区別しないようにすることはできますか?
red888

3

以下を使用して、名前、インスタンスID、プライベートIPでさらにフィルタリングできます。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.