web-dev-qa-db-ja.com

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

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

私はaws cliツールを使用しています。

34
Shiplu Mokaddim

「名前」のキーを持つタグにインスタンスの名前を配置する規則を使用していると仮定すると(これは、名前を入力したときに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'

注意: --queryにはaws-cliの最新バージョンが必要な場合がありますが、取得する価値があります。

61
Eric Hammond

以下を使用して、名前、インスタンス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
4

jqを使用している場合は、次のようにしてこれを実現できます。

aws ec2 describe-instances | 
jq -r '.Reservations[].Instances[] | 
select(.Tags[].Value | startswith("dev-server-"))'

次のようなより具体的な結果を得るために、jqに追加のフィルターを追加できます。

... startswith("dev-server-")) | .PublicDnsName'
0
enharmonic