AWS CLIコマンドは色々な情報を取得できたり、設定できたります。--filterオプションと--queryオプションを同時に指定することで、特定した情報を取得できます。 EXCELの行と列を指定して、取り出したい項目を特定する事と同様の結果を得れます。
図A AWSシステム構成図
1. aws ec2 describe-instances コマンドにfiltersとqueryオプションを利用しよう
aws ec2 describe-instancesコマンドを実行すると、リージョンにあるすべてのインスタンス情報が出力されます。特定のインスタンスに絞りたい場合にfiltersオプションを使用し,かつ,特定の項目のみ出力したい場合は、queryオプションも同時に指定します。
https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html にあるように、queryで出力したい項目を,きちんと書かないと機能しません。 The following describe-instances examples use the --query parameter to display only the instance and subnet IDs for all instances, in JSON format. Exsample8 インスタンスタンスIDと,サブネットIdのみを出力 --query 'Reservations[*].Instances[*]{Instance:InstanceId,Subnet:SubnetId}' Exsample10 インスタンスId,アベイラビリティゾーン,Name Tagの値 --query 'Reservations[*].Instances[*].{Instance:InstanceId,AZ:Placement.AvailabilityZone,Name:Tags[?Key==`Name`]|[0].Value}'
コマンド例 コマンド実行結果のjson形式を jqで成形します。 例1 インスタンスタイプ(t3a.micro)を抽出し,そのフィールドを出力aws ec2 describe-instances \ --filters Name=instance-type,Values=t3a.micro \ --query 'Reservations[*].Instances[*].{Type:InstanceType}' | jq . 例2 インスタンスタイプ(t3a.micro)のみ抽出し,インスタンスタイプ,Name Tagを出力aws ec2 describe-instances \ --filters Name=instance-type,Values=t3a.micro \ --query 'Reservations[*].Instances[*].{Type:InstanceType,Name:Tags[?Key==`Name`].Value}' | jq . 例3 インスタンスタイプ(t3a.micro 又は t3.micro)を抽出し,インスタンスタイプ,Name Tagを出力aws ec2 describe-instances \ --filters Name=instance-type,Values=t3a.micro,t3.micro \ --query 'Reservations[*].Instances[*].{Type:InstanceType,Name:Tags[?Key==`Name`].Value}' | jq . 例4 インスタンスの状態(running 又は stopped)を抽出し,インスタンスタイプ,Name Tag,状態(State)を出力aws ec2 describe-instances \ --filters Name=instance-state-name,Values=running,stopped \ --query 'Reservations[*].Instances[*].{Type:InstanceType,Name:Tags[?Key==`Name`].Value,State:State.Name}' | jq . 例5 インスタンスの状態(running 又は stopped)を抽出し,インスタンスタイプ,プラットフォームOS,Name Tag,状態(State)を出力aws ec2 describe-instances \ --filters Name=instance-state-name,Values=running,stopped \ --query 'Reservations[*].Instances[*].{Type:InstanceType,OS:PlatformDetails,Name:Tags[?Key==`Name`].Value,State:State.Name}' | jq .
例6 インスタンスタイプ(t3.micro)で,かつ,インスタンスがstopedを抽出し,インスタンスタイプ,Name Tag,状態(State)を出力aws ec2 describe-instances \ --filters Name=instance-type,Values=t3.micro \ Name=instance-state-name,Values=stopped \ --query 'Reservations[*].Instances[*].{Type:InstanceType,Name:Tags[?Key==`Name` ].Value,State:State.Name}' | jq . 例7 インスタンスタイプ(t3.micro)で,かつ,インスタンスがstopedを抽出し,インスタンスタイプ,プラットフォームOS,Name Tag,状態(State)を出力aws ec2 describe-instances \ --filters Name=instance-type,Values=t3.micro \ Name=instance-state-name,Values=stopped \ --query 'Reservations[*].Instances[*].{Type:InstanceType,OS:PlatformDetails,Name:Tags[?Key==`Name`].Value,State:State.Name}' | jq .
例1 インスタンスタイプ(t3a.micro)のみ抽出し,インスタンスタイプのフィールドのみ出力の実行結果 一部のみ掲載 [ [ { "Type": "t3a.micro" } ], [ { "Type": "t3a.micro" } ] 例2 インスタンスタイプ(t3a.micro)のみ抽出し,インスタンスタイプ,Name Tagを出力の実行結果 一部のみ掲載 [ [ { "Type": "t3a.micro", "Name": [ "Ama-linux2-kami" ] } ], [ { "Type": "t3a.micro", "Name": [ "Ama_linux2_Redmine_MySQL" ] } ]
例3 インスタンスタイプ(t3a.micro 又は t3.micro)を抽出し,インスタンスタイプ,Name Tagを出力の実行結果 一部のみ掲載 [ { "Type": "t3.micro", "Name": [ "kamishita-docker-python" ] } ], [ { "Type": "t3a.micro", "Name": [ "Ama_linux2_Redmine_MySQL" ] } ]
例4 インスタンスの状態(running 又は stopped)を抽出し,インスタンスタイプ,Name Tag,状態(State)を出力の実行結果 一部のみ掲載 [ { "Type": "t3a.micro", "Name": [ "Ama_linux2_Redmine_MySQL" ], "State": "running" } ], [ { "Type": "t3a.micro", "Name": [ "kamishita_linux2023_private" ], "State": "stopped" } ] 例5 インスタンスの状態(running 又は stopped)を抽出し,インスタンスタイプ,プラットフォームOS,Name Tag,状態(State)を出力の実行結果 一部のみ掲載 { "Type": "t3a.micro", "OS": "Linux/UNIX", "Name": [ "Ama_linux2_Redmine_MySQL" ], "State": "running" } ], [ { "Type": "t3a.micro", "OS": "Linux/UNIX", "Name": [ "debug-docker-kami" ], "State": "stopped" } ]
例6 インスタンスタイプ(t3.micro)で,かつ,インスタンスがstopedを抽出し,インスタンスタイプ,Name Tag,状態(State)を出力の実行結果 [ [ { "Type": "t3.micro", "Name": [ "kamishita-docker-python" ], "State": "stopped" } ], [ { "Type": "t3.micro", "Name": [ "kamishita_Public_AMA2023" ], "State": "stopped" } ] ] 例7 インスタンスタイプ(t3.micro)で,かつ,インスタンスがstopedを抽出し,インスタンスタイプ,プラットフォームOS,Name Tag,状態(State)を出力の実行結果 [ [ { "Type": "t3.micro", "OS": "Linux/UNIX", "Name": [ "kamishita-docker-python" ], "State": "stopped" } ], [ { "Type": "t3.micro", "OS": "Linux/UNIX", "Name": [ "kamishita_Public_AMA2023" ], "State": "stopped" } ] ]
関連