aws cli使ってみよう
セットアップ方法は記載しません。
①まずは以下のコマンドを実行してみる
aws ec2 describe-vpcs
結果
{
"Vpcs": [
{
"OwnerId": "xxxxxxxxxx",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-0aaxxxxxa0axxxxxxxx",
"CidrBlock": "172.31.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
略
結果からわかること
Vpcs以下にすべてのデータが存在すること
aws cliで特定のデータを取得したい場合
--queryコマンドを使う
aws ec2 describe-vpcs --query "Vpcs[].OwnerId"
jqが得意な方は
aws ec2 describe-vpcs | jq -r .Vpcs[].OwnerId
複数要素を指定したい場合
aws ec2 describe-vpcs --query 'Vpcs[].[OwnerId,VpcId]'
aws-cli 調査ナレッジ
①「Nameという名前のタグが設定されているインスタンスだけを抽出したい」
以下の意味
AI回答
--filters "Name=tag-key,Values=Name"
例
ちょっと表示が多い・・・
aws ec2 describe-tags --filters "Name=key,Values=Name"
インスタンスの名前一覧が欲しい
例
aws ec2 describe-tags --filters "Name=key,Values=Name" "Name=resource-type,Values=instance"
②「--filters」と「--query」の違い
AI回答
- --filters(サーバー側で選別):
「Nameタグがないインスタンス」を通信の段階で除外します。大量のインスタンスがある場合、通信量を減らせるため高速です。 - --query(クライアント側で整形):
取得したデータの中から、特定の項目(今回の場合はタグの値など)を抜き出して表示するために使います。
可能な限りfiltersのほうがよいと思う。
ではqueryで書く場合
aws ec2 describe-instances --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value' --output text