こんにちは。AWS CLIが好きな福島です。
今回は、EC2のリソース情報を取得するコマンドをご紹介いたします。
私はよくqueryを使うため、queryの使い方が分からない方は、こちらを参照していただけますと幸いです。
- 実行環境
- 利用するコマンド,サブコマンド
- 基本情報の取得
- 詳細情報の取得
- インスタンスプロファイル一覧
- 削除保護チェック
- 終了時の動作
- ステータスチェック
- ENI情報の取得
- ボリューム情報の取得
- ボリュームの詳細情報取得
- セキュリティグループ情報の取得
- タグ情報の取得
- おわりに
実行環境
今回、コマンドを実行した環境は、以下の通りとなります。
(本記事でご紹介しているコマンドの中には、Linuxのコマンドを利用している箇所があります。)
# uname -a Linux LAPTOP-CNM26HN6 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux #
利用するコマンド,サブコマンド
まず、AWS CLIの構造は以下の通りです。
aws <command> <subcommand> [options and parameters]
上記を前提に今回使う <command>,<subcommand>
は、以下の通りです。
<command>
- ec2
<subcommand>
- ①describe-instances
→EC2の情報を取得できます。 - ②describe-iam-instance-profile-associations
→ EC2のインスタンスプロファイルの情報を取得できます。 - ③describe-tags
→Tagの情報を取得できます。 - ④describe-instance-attribute
→EC2の詳細設定の情報を取得できます。 - ⑤describe-instance-status
→EC2のステータスを取得できます。 - ⑥describe-volumes
→EBSの情報を取得できます。
基本情報の取得
コマンド(ヘッダー無し)
aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,InstanceType,ImageId,KeyName,Placement.AvailabilityZone,PrivateIpAddress,State.Name,VpcId,SubnetId]" --output text
- 実行結果
fk-linux-jira i-0f6126b7aeedfabd6 t2.medium ami-041581098aa702a3b fk-test-key ap-northeast-1c 10.88.1.83 stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 fk-test-vyos i-050536efdd9dc1126 t3.large ami-0bcd9399d3bfa0a0e fk-test-key ap-northeast-1c 10.88.1.249 stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 fk-test-smtp i-0807173c03bac7939 t4g.micro ami-0ff2715db3ddfcaf5 fk-test-key ap-northeast-1c 10.88.1.46 stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234
コマンド(ヘッダー有り)
echo "NameTag InstanceId ImageId InstanceType AvailabilityZone KeyName PrivateIpAddress State VpcId SubnetId" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,ImageId,InstanceType,Placement.AvailabilityZone,KeyName,PrivateIpAddress,State.Name,VpcId,SubnetId]" --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
NameTag InstanceId ImageId InstanceType AvailabilityZone KeyName PrivateIpAddress State VpcId SubnetId fk-test-asav i-xxxxxxxxxxxxxxxxx ami-xxxxxxxxxxxxxxxxx m4.large ap-northeast-1c fk-test-key 10.88.1.127 stopped vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx fk-win-ad i-xxxxxxxxxxxxxxxxx ami-xxxxxxxxxxxxxxxxx t2.medium ap-northeast-1a fk-test-key 10.88.0.240 stopped vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx fk-test-jwin2016 i-xxxxxxxxxxxxxxxxx ami-xxxxxxxxxxxxxxxxx t2.medium ap-northeast-1a fk-test-key 10.88.0.241 stopped vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx
詳細情報の取得
コマンド ヘッダー無し
aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,ImageId,InstanceType,CpuOptions.CoreCount,CpuOptions.ThreadsPerCore,KeyName,Placement.AvailabilityZone,State.Name,VpcId,SubnetId,Architecture,EbsOptimized,EnaSupport,Hypervisor,SourceDestCheck,VirtualizationType,Monitoring.State,HibernationOptions.Configured]" --output text
- 実行結果
fk-linux-jira i-0f6126b7aeedfabd6 ami-041581098aa702a3b t2.medium 2 1 fk-test-key ap-northeast-1c stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 x86_64 False True xen True hvm disabled False fk-test-vyos i-050536efdd9dc1126 ami-0bcd9399d3bfa0a0e t3.large 1 2 fk-test-key ap-northeast-1c stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 x86_64 True True xen False hvm disabled False fk-test-smtp i-0807173c03bac7939 ami-0ff2715db3ddfcaf5 t4g.micro 2 1 fk-test-key ap-northeast-1c stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 arm64 True True xen True hvm disabled False
コマンド ヘッダー有り
echo "NameTag InstanceId ImageId InstanceType CoreCount ThreadsPerCore KeyName AvailabilityZone Name VpcId SubnetId Architecture EbsOptimized EnaSupport Hypervisor SourceDestCheck VirtualizationType Monitoring.State Hibernation" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,ImageId,InstanceType,CpuOptions.CoreCount,CpuOptions.ThreadsPerCore,KeyName,Placement.AvailabilityZone,State.Name,VpcId,SubnetId,Architecture,EbsOptimized,EnaSupport,Hypervisor,SourceDestCheck,VirtualizationType,Monitoring.State,HibernationOptions.Configured]" --output text | sort >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
NameTag InstanceId ImageId InstanceType CoreCount ThreadsPerCore KeyName AvailabilityZone Name VpcId SubnetId Architecture EbsOptimized EnaSupport Hypervisor SourceDestCheck VirtualizationType Monitoring.State Hibernation aws-cloud9-aws-code-hands-on-0f7eeec411fd49be880ebf5a4791df17 i-03767ce5637a45a1a ami-0ea42ac15b5216c72 t2.micro 1 1 None ap-northeast-1a stopped vpc-0fee138d3e0deef81 subnet-0093d7475de79313b x86_64 False True xen True hvm disabled False fk-linux i-0808672558492fde8 ami-052652af12b58691f t3.micro 1 2 fk-test-key ap-northeast-1a stopped vpc-0fee138d3e0deef81 subnet-0093d7475de79313b x86_64 True True xen True hvm disabled False fk-linux-jira i-0f6126b7aeedfabd6 ami-041581098aa702a3b t2.medium 2 1 fk-test-key ap-northeast-1c stopped vpc-0fee138d3e0deef81 subnet-03fbedc39e6211234 x86_64 False True xen True hvm disabled False
インスタンスプロファイル一覧
コマンド ヘッダー無し
aws ec2 describe-iam-instance-profile-associations --query "IamInstanceProfileAssociations[].[InstanceId,IamInstanceProfile.Arn]" --output text | sort
- 実行結果
i-xxxxxxxxxxxxxxxxx arn:aws:iam::xxxxxxxxxxxx:instance-profile/base-ec2-ap-northeast-1 i-xxxxxxxxxxxxxxxxx arn:aws:iam::xxxxxxxxxxxx:instance-profile/ec2-s3
コマンド ヘッダー有り(NameTag付き)
echo "InstanceId NameTag IamInstanceProfile" > /tmp/awscli.tmp;\ aws ec2 describe-iam-instance-profile-associations --query "IamInstanceProfileAssociations[].[InstanceId,IamInstanceProfile.Arn]" --output text | sort > /tmp/awscli-tag-jonn1.tmp;\ aws ec2 describe-tags --filters "Name=key,Values=Name" "Name=resource-type,Values=instance" --query "Tags[].[ResourceId,Value]" --output text | sort > /tmp/awscli-tag-jonn2.tmp;\ join /tmp/awscli-tag-jonn2.tmp /tmp/awscli-tag-jonn1.tmp >> /tmp/awscli.tmp ;\ join -v 1 /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp | sed 's/arn/ None arn/g' | sort >> /tmp/awscli.tmp ;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp
- 実行結果
InstanceId NameTag IamInstanceProfile i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 arn:aws:iam::xxxxxxxxxxxx:instance-profile/base-ec2-ap-northeast-1 i-xxxxxxxxxxxxxxxxx fk-linux arn:aws:iam::xxxxxxxxxxxx:instance-profile/ec2-s3
削除保護チェック
コマンド ヘッダー無し(1台だけ)
INSTNACEID="" ★インスタンスIDを設定してください。 aws ec2 describe-instance-attribute --instance-id ${INSTNACEID} --attribute disableApiTermination --query "[InstanceId,DisableApiTermination.Value]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx False
コマンド ヘッダー有り(NameTag付き)
※インスタンスの台数分コマンドを実行するため、少し時間がかかります。 また、NameTagが付与されていないインスタンスは、列がずれます。
echo "InstanceId NameTag disableApiTermination" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --output text | tr "\t" "\n" | while read line; do aws ec2 describe-instance-attribute --instance-id ${line} --attribute disableApiTermination --query "[InstanceId,DisableApiTermination.Value]" --output text; done | sort > /tmp/awscli-tag-jonn1.tmp;\ aws ec2 describe-tags --filters "Name=key,Values=Name" "Name=resource-type,Values=instance" --query "Tags[].[ResourceId,Value]" --output text | sort > /tmp/awscli-tag-jonn2.tmp;\ join /tmp/awscli-tag-jonn2.tmp /tmp/awscli-tag-jonn1.tmp >> /tmp/awscli.tmp ;\ join -v 1 /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp >> /tmp/awscli.tmp ;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp
- 実行結果
InstanceId NameTag disableApiTermination i-xxxxxxxxxxxxxxxxx fk-win-ad False i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 False i-xxxxxxxxxxxxxxxxx fk-test-vyos False
終了時の動作
コマンド ヘッダー無し(1台だけ)
INSTNACEID="" aws ec2 describe-instance-attribute --instance-id ${INSTNACEID} --attribute instanceInitiatedShutdownBehavior --query "[InstanceId,InstanceInitiatedShutdownBehavior.Value]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx stop
コマンド ヘッダー有り(NameTag付き)
※インスタンスの台数分コマンドを実行するため、少し時間がかかります。 また、NameTagが付与されていないインスタンスは、列がずれます。
echo "InstanceId NameTag instanceInitiatedShutdownBehavior" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --output text | tr "\t" "\n" | while read line; do aws ec2 describe-instance-attribute --instance-id ${line} --attribute instanceInitiatedShutdownBehavior --query "[InstanceId,InstanceInitiatedShutdownBehavior.Value]" --output text; done | sort > /tmp/awscli-tag-jonn1.tmp;\ aws ec2 describe-tags --filters "Name=key,Values=Name" "Name=resource-type,Values=instance" --query "Tags[].[ResourceId,Value]" --output text | sort > /tmp/awscli-tag-jonn2.tmp;\ join /tmp/awscli-tag-jonn2.tmp /tmp/awscli-tag-jonn1.tmp >> /tmp/awscli.tmp ;\ join -v 1 /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp >> /tmp/awscli.tmp ;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp
- 実行結果
InstanceId NameTag instanceInitiatedShutdownBehavior i-xxxxxxxxxxxxxxxxx fk-win-ad stop i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 stop i-xxxxxxxxxxxxxxxxx fk-test-vyos stop
ステータスチェック
コマンド ヘッダー無し
aws ec2 describe-instance-status --query "InstanceStatuses[].[InstanceId,InstanceState.Name,InstanceStatus.Status,SystemStatus.Status]" --output text | sort
- 実行結果
i-xxxxxxxxxxxxxxxxx running ok ok
コマンド ヘッダー有り(NameTag付き)
※NameTagが付与されていないインスタンスは、列がずれます。
echo "InstanceId NameTag State InstanceStatus SystemStatus" > /tmp/awscli.tmp;\ aws ec2 describe-instance-status --query "InstanceStatuses[].[Tags[?Key=='Name'] | [0].Value,InstanceId,InstanceState.Name,InstanceStatus.Status,SystemStatus.Status]" --output text | sort > /tmp/awscli-tag-jonn1.tmp;\ aws ec2 describe-tags --filters "Name=key,Values=Name" "Name=resource-type,Values=instance" --query "Tags[].[ResourceId,Value]" --output text | sort > /tmp/awscli-tag-jonn2.tmp;\ join /tmp/awscli-tag-jonn2.tmp /tmp/awscli-tag-jonn1.tmp >> /tmp/awscli.tmp ;\ join -v 1 /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp >> /tmp/awscli.tmp ;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp /tmp/awscli-tag-jonn1.tmp /tmp/awscli-tag-jonn2.tmp
- 実行結果
InstanceId NameTag State InstanceStatus SystemStatus i-xxxxxxxxxxxxxxxxx fk-linux running ok ok
ENI情報の取得
※プライマリとセカンダリENIのみ出力。
コマンド ヘッダー無し
aws ec2 describe-instances --query "Reservations[].Instances[].\ [InstanceId,VpcId,SubnetId,\ NetworkInterfaces[0].Association.PublicIp,\ NetworkInterfaces[0].NetworkInterfaceId,NetworkInterfaces[0].PrivateIpAddresses[0].PrivateIpAddress,\ NetworkInterfaces[1].NetworkInterfaceId,NetworkInterfaces[0].PrivateIpAddresses[1].PrivateIpAddress]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.1.83 None None i-xxxxxxxxxxxxxxxxx vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.1.153 None None i-xxxxxxxxxxxxxxxxx vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.1.249 None None
コマンド ヘッダー有り(NameTag付き)
echo "NameTag InstanceId VpcId SubnetId PublicIP PrimaryENI PrimaryPrivateIpAddress SeconderyENI SseconderyPrivateIpAddress" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,VpcId,SubnetId,\ NetworkInterfaces[0].Association.PublicIp,\ NetworkInterfaces[0].NetworkInterfaceId,NetworkInterfaces[0].PrivateIpAddresses[0].PrivateIpAddress,\ NetworkInterfaces[1].NetworkInterfaceId,NetworkInterfaces[1].PrivateIpAddresses[0].PrivateIpAddress]" \ --output text | sort >>/tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
InstanceId NameTag VpcId SubnetId PublicIP PrimaryENI PrimaryPrivateIpAddress SeconderyENI SseconderyPrivateIpAddress i-xxxxxxxxxxxxxxxxx fk-win-ad vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.0.240 eni-xxxxxxxxxxxxxxxxx 10.88.0.220 i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.0.150 None None i-xxxxxxxxxxxxxxxxx fk-test-vyos vpc-xxxxxxxxxxxxxxxxx subnet-xxxxxxxxxxxxxxxxx None eni-xxxxxxxxxxxxxxxxx 10.88.1.249 None None
ボリューム情報の取得
※3つのボリュームだけ出力。
コマンド ヘッダー無し
aws ec2 describe-instances --query "Reservations[].Instances[].\ [InstanceId,\ BlockDeviceMappings[0].DeviceName,BlockDeviceMappings[0].Ebs.DeleteOnTermination,BlockDeviceMappings[0].Ebs.VolumeId, \ BlockDeviceMappings[1].DeviceName,BlockDeviceMappings[1].Ebs.DeleteOnTermination,BlockDeviceMappings[1].Ebs.VolumeId, \ BlockDeviceMappings[2].DeviceName,BlockDeviceMappings[2].Ebs.DeleteOnTermination,BlockDeviceMappings[2].Ebs.VolumeId]" \ --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx /dev/xvda True vol-0a6092980c505e7ca None None None None None None i-xxxxxxxxxxxxxxxxx /dev/sda1 True vol-0f9005c084d48a632 None None None None None None i-xxxxxxxxxxxxxxxxx /dev/xvda True vol-0e0f2f0c98bf36694 None None None None None None
コマンド ヘッダー有り(NameTag付き)
echo "NameTag InstanceId DeviceName[1] DeleteOnTermination[1] VolumeId[1] DeviceName[2] DeleteOnTermination[2] VolumeId[2] DeviceName[3] DeleteOnTermination[3] VolumeId[3]" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,BlockDeviceMappings[0].DeviceName,BlockDeviceMappings[0].Ebs.DeleteOnTermination,BlockDeviceMappings[0].Ebs.VolumeId,BlockDeviceMappings[1].DeviceName,BlockDeviceMappings[1].Ebs.DeleteOnTermination,BlockDeviceMappings[1].Ebs.VolumeId,BlockDeviceMappings[2].DeviceName,BlockDeviceMappings[2].Ebs.DeleteOnTermination,BlockDeviceMappings[2].Ebs.VolumeId]" --output text | sort >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
InstanceId NameTag DeviceName[1] DeleteOnTermination[1] VolumeId[1] DeviceName[2] DeleteOnTermination[2] VolumeId[2] DeviceName[3] DeleteOnTermination[3] VolumeId[3] i-xxxxxxxxxxxxxxxxx fk-win-ad /dev/sda1 True vol-0ed26b83c38d909c8 None None None None None None i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 /dev/sda1 True vol-085a475bc6367330e None None None None None None i-xxxxxxxxxxxxxxxxx fk-linux /dev/xvda True vol-0172865e01b54cad9 /dev/sdb True vol-03a8f440ea016b119 None None None
ボリュームの詳細情報取得
コマンド ヘッダー無し
aws ec2 describe-volumes --query "Volumes[].[Attachments[0].InstanceId,AvailabilityZone,Encrypted,Size,State,VolumeId,Iops,VolumeType]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxxxx ap-northeast-1a False 8 in-use vol-xxxxxxxxxxxxxxxxxxxx 100 gp2 i-xxxxxxxxxxxxxxxxxxx ap-northeast-1a False 8 in-use vol-xxxxxxxxxxxxxxxxxxxx 100 gp2 None ap-northeast-1a False 10 available vol-xxxxxxxxxxxxxxxxxxxx 100 gp2
コマンド ヘッダー有り(NameTag付き)
echo "InstanceId NameTag VolumeId AvailabilityZone Encrypted State Size Iops VolumeType" > /tmp/awscli.tmp;\ aws ec2 describe-volumes --query "Volumes[].[Tags[?Key=='Name'] | [0].Value,Attachments[0].InstanceId,VolumeId,AvailabilityZone,Encrypted,Size,State,Iops,VolumeType]" --output text | sort >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
InstanceId NameTag VolumeId AvailabilityZone Encrypted State Size Iops VolumeType i-xxxxxxxxxxxxxxxxxxx yamazon-win-2019-english vol-xxxxxxxxxxxxxxxxxxx ap-northeast-1a False 30 in-use 100 gp2 i-xxxxxxxxxxxxxxxxxxx fk-test-jwin2019 vol-xxxxxxxxxxxxxxxxxxx ap-northeast-1a False 30 in-use 100 gp2 i-xxxxxxxxxxxxxxxxxxx fk-test-vyos vol-xxxxxxxxxxxxxxxxxxx ap-northeast-1c False 4 in-use 100 gp2
セキュリティグループ情報の取得
※5個だけ出力。
コマンド ヘッダー無し
aws ec2 describe-instances --query "Reservations[].Instances[].\ [InstanceId,PrivateIpAddress,\ SecurityGroups[0].GroupName,SecurityGroups[0].GroupId,\ SecurityGroups[1].GroupName,SecurityGroups[1].GroupId,\ SecurityGroups[2].GroupName,SecurityGroups[2].GroupId,\ SecurityGroups[3].GroupName,SecurityGroups[3].GroupId,\ SecurityGroups[4].GroupName,SecurityGroups[4].GroupId]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx 10.88.1.83 jira-t-5569 sg-024ecbe396a3b1803 fk-test-public-sg sg-00c78fbf089ace674 fk-test-redis-sg sg-01d8e3364ff438d84 None None None None i-xxxxxxxxxxxxxxxxx 10.88.1.153 fk-test-public-sg sg-00c78fbf089ace674 None None None None None None None None i-xxxxxxxxxxxxxxxxx 10.88.1.249 fk-test-vpn-sg sg-0bf94f91d38a95edf None None None None None None None None
コマンド ヘッダー有り(NameTag付き)
echo "NameTag InstanceId PrivateIpAddress GroupName[1] GroupId[1] GroupName[2] GroupId[2] GroupName[3] GroupId[3] GroupName[4] GroupId[4] GroupName[5] GroupId[5]" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,PrivateIpAddress,SecurityGroups[0].GroupName,SecurityGroups[0].GroupId,SecurityGroups[1].GroupName,SecurityGroups[1].GroupId,SecurityGroups[2].GroupName,SecurityGroups[2].GroupId,SecurityGroups[3].GroupName,SecurityGroups[3].GroupId,SecurityGroups[4].GroupName,SecurityGroups[4].GroupId]" --output text | sort >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
InstanceId NameTag PrivateIpAddress GroupName[1] GroupId[1] GroupName[2] GroupId[2] GroupName[3] GroupId[3] GroupName[4] GroupId[4] GroupName[5] GroupId[5] i-xxxxxxxxxxxxxxxxx fk-win-ad 10.88.0.240 fk-test-ad-sg sg-0754867b9033b3199 None None None None None None None None i-xxxxxxxxxxxxxxxxx fk-test-jwin2019 10.88.0.150 fk-test-public-sg sg-00c78fbf089ace674 None None None None None None None None i-xxxxxxxxxxxxxxxxx fk-test-vyos 10.88.1.249 fk-test-vpn-sg sg-0bf94f91d38a95edf None None None None None None None None
タグ情報の取得
コマンド ヘッダー無し
aws ec2 describe-instances --query "Reservations[].Instances[].\ [InstanceId,\ Tags[0].Key,Tags[0].Value,\ Tags[1].Key,Tags[1].Value,\ Tags[2].Key,Tags[2].Value,\ Tags[3].Key,Tags[3].Value,\ Tags[4].Key,Tags[4].Value,\ Tags[5].Key,Tags[5].Value,\ Tags[6].Key,Tags[6].Value,\ Tags[7].Key,Tags[7].Value,\ Tags[8].Key,Tags[8].Value,\ Tags[9].Key,Tags[9].Value]" --output text
- 実行結果
i-xxxxxxxxxxxxxxxxx Name fk-linux-jira None None None None None None None None None None None None None None None None None None i-xxxxxxxxxxxxxxxxx Name fk-test-jwin2019-02 None None None None None None None None None None None None None None None None None None i-xxxxxxxxxxxxxxxxx Name fk-test-vyos None None None None None None None None None None None None None None None None None None i-xxxxxxxxxxxxxxxxx Name fk-linux Inspector True None None None None None None None None None None None None None None None None
コマンド ヘッダー有り
echo "InstanceId \ Tag-Key[1] Tag-Value[1] \ Tag-Key[2] Tag-Value[2] \ Tag-Key[3] Tag-Value[3] \ Tag-Key[4] Tag-Value[4] \ Tag-Key[5] Tag-Value[5] \ Tag-Key[6] Tag-Value[6] \ Tag-Key[7] Tag-Value[7] \ Tag-Key[8] Tag-Value[8] \ Tag-Key[9] Tag-Value[9] \ Tag-Key[10] Tag-Value[10]" > /tmp/awscli.tmp;\ aws ec2 describe-instances --query "Reservations[].Instances[].\ [InstanceId,\ Tags[0].Key,Tags[0].Value,\ Tags[1].Key,Tags[1].Value,\ Tags[2].Key,Tags[2].Value,\ Tags[3].Key,Tags[3].Value,\ Tags[4].Key,Tags[4].Value,\ Tags[5].Key,Tags[5].Value,\ Tags[6].Key,Tags[6].Value,\ Tags[7].Key,Tags[7].Value,\ Tags[8].Key,Tags[8].Value,\ Tags[9].Key,Tags[9].Value]" --output text >> /tmp/awscli.tmp;\ column -t /tmp/awscli.tmp;\ rm /tmp/awscli.tmp
- 実行結果
InstanceId Tag-Key[1] Tag-Value[1] Tag-Key[2] Tag-Value[2] Tag-Key[3] Tag-Value[3] Tag-Key[4] Tag-Value[4] Tag-Key[5] Tag-Value[5] Tag-Key[6] Tag-Value[6] Tag-Key[7] Tag-Value[7] Tag-Key[8] Tag-Value[8] Tag-Key[9] Tag-Value[9] Tag-Key[10] Tag-Value[10] i-xxxxxxxxxxxxxxxxx Name fk-linux-jira None None None None None None None None None None None None None None None None None None i-xxxxxxxxxxxxxxxxx Name fk-test-jwin2019-02 None None None None None None None None None None None None None None None None None None i-xxxxxxxxxxxxxxxxx Name fk-linux Inspector True None None None None None None None None None None None None None None None None
おわりに
今回は、EC2関連のリソースを一覧取得するコマンドをご紹介いたしました。
次回は、これら情報をCSV形式で出力する方法をご紹介したいと思います。