はじめに
aws cli
は良くも悪くもJSON
で値が返ってくる- 普通の
grep
では追っつかないこともあるのでjq
で色々と頑張ることにする - ただし、タイトル負けする内容
参考
逆引きパターン
準備
アクセスキーやシークレットアクセスキーを下記のように設定して適当なファイル名で保存する。
[default] aws_access_key_id=xxxxxxxxxxxxxxxxxxxxx aws_secret_access_key=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy region=ap-northeast-1
例えば info.txt
というファイル名で設定した場合には以下のように環境変数に登録する。
export AWS_CONFIG_FILE=info.txt
全てのインスタンスの情報を取得する!
aws ec2 describe-instances | jq '.Reservations[].Instances[]'
以下のような出力が得られる。
{ "AmiLaunchIndex": 0, "StateTransitionReason": null, "RootDeviceType": "ebs", "VirtualizationType": "paravirtual", "RootDeviceName": "/dev/sda1", "StateReason": { "Code": "Client.InstanceInitiatedShutdown", "Message": "Client.InstanceInitiatedShutdown: Instance initiated shutdown" }, "Architecture": "x86_64", "BlockDeviceMappings": [ { "Ebs": { "AttachTime": "2013-08-31T13:36:43.000Z", "VolumeId": "vol-xxxxxxx", "DeleteOnTermination": true, "Status": "attached" }, "DeviceName": "/dev/sda1" } ], "Hypervisor": "xen", "Placement": { "AvailabilityZone": "ap-northeast-1a", "GroupName": null, "Tenancy": "default" }, "Tags": [ { "Key": "Name", "Value": null } ], "ProductCodes": [], "LaunchTime": "2013-08-31T22:46:41.000Z", "EbsOptimized": false, "State": { "Name": "stopped", "Code": 80 }, "KernelId": "aki-xxxxxxx", "PublicDnsName": null, "Monitoring": { "State": "disabled" }, "InstanceId": "i-xxxxxxx", "ImageId": "ami-fe6ceeff", "PrivateDnsName": null, "KeyName": "xxxxxxxxx", "SecurityGroups": [ { "GroupId": "sg-xxxxxxx", "GroupName": "quick-start-8" } ], "ClientToken": "xxxxxxxxxxxxxxxx", "InstanceType": "t1.micro", "NetworkInterfaces": [] }
全てのインスタンスの Public IP と Public DNS Name を取得する!
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {PublicDnsName, PublicIpAddress}'
以下のような出力が得られる。
{ "PublicIpAddress": "xx.xxx.xxx.xxx", "PublicDnsName": "ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com" }
全てのインスタンスのタグ名を取得する!
aws ec2 describe-instances | jq '.Reservations[].Instances[].Tags[] '
以下のような出力が得られる。
{ "Key": "Name", "Value": null }
タグ名をつけていない場合には上記のように値は null
っとなる。
最後に
- まだまだ続く!
- やりたいこととしてはタグ名を取得してデプロイ先のホスト情報を取得できればなーと考えている