はじめに
AWS CLIの ec2 describe-instances コマンドを使用してインスタンスの情報を取得する方法を記述します。
環境
- Amazon Linux AMI release 2014.03
- aws-cli 1.4.4
- jq 1.4
AWS CLIの設定
$ aws configure
※ 「AWS Access Key ID」「AWS Secret Access Key」「Default region name」「Default output format」を指定しておきます。
AWS CLIでEC2インスタンスの情報を取得する
- リージョン内で稼働している全インスタンスの情報を取得する場合
$ aws ec2 describe-instances
- インスタンスIDを指定して取得する場合
$ aws ec2 describe-instances --instance-ids ${instance-id}
複数指定する場合はインスタンスIDをスペースで区切ります。
$ aws ec2 describe-instances --instance-ids ${instance-id} ${instance-id-2} ${instance-id-3}
- インスタンスの状態が「running」のもののみ取得する場合
$ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running"
runningのほかには、「pending」「shutting-down」「terminated」「stopping」「stopped」を指定することができます。
- 特定のインスタンスタイプのインスタンスの情報を取得する場合
$ aws ec2 describe-instances --filter "Name=instance-type,Values=m3.xlarge"
上記の場合は、インスタンスタイプが「m3.xlarge」のインスタンスの一覧を取得できます。
- 複数の条件を指定する場合
$ aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" "Name=instance-type,Values=m3.xlarge"
filterに複数の条件をスペース区切りで指定します。
- タグを条件に指定する場合
$ aws ec2 describe-instances --filter "Name=tag:Name,Values=web001"
上記の場合は、タグ 「Key : Name, Value : web001」のインスタンスの情報を取得します。
取得するインスタンスの情報を絞りこむ
describe-instancesコマンドにより取得したインスタンス情報をjqコマンドでさらにしぼりこみます。
- jqコマンドのインストール
$ sudo yum install jq
- インスタンスIDのみ取得する場合
$ aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId'
- インスタンスID、インスタンスタイプ、プライベートIPを取得する場合
$ aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PrivateIpAddress}'
- インスタンスID、プライベートIP、タグ名(Key=Name)を取得する場合
$ aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, PrivateIpAddress, InstanceName: (.Tags[] | select(.Key=="Name").Value)}'