はじめに
- とりあえずメモ
参考
aws-cli チートシート
インスタンスの情報を取得(1)
インスンタンスへ ssh
でアクセスするのに必要な情報を取得する。
aws ec2 describe-instances --filters Name=tag-value,Values="hogehoge*" |jq '.Reservations[].Instances[]|{InstanceId,PublicIpAddress,PrivateIpAddress,Tags}'
インスタンスの情報を取得(2)
${instance_ID} の IP アドレスとアクセスに必要な ssh
キーの情報を取得する。
aws ec2 describe-instances --filters Name=instance-id,Values="${instance_ID}" | jq '.Reservations[].Instances[]|{PublicIpAddress,KeyName}'
インスタンスの情報を取得(3)
アカウント上で稼働、停止しているインスタンスのインスタンス ID とタグで設定している名前、プライベート、パブリック IP を取得して csv
形式で出力する。
aws ec2 describe-instances | ~/bin/jq -r '@csv "\(.Reservations[].Instances[] | [.InstanceId, .Tags[0].Value,.PrivateIpAddress,.PublicIpAddress])"'
インスタンスを作成後に作成したインスタンス ID を取得する
aws ec2 run-instances \ --image-id ${ami_ID} \ --count 1 \ --instance-type t1.micro \ --key-name ${keyname} \ --security-group-ids ${security-group_ID} \ --subnet-id ${subnet_ID} \ --associate-public-ip-address | jq -c -r '.Instances[]|.InstanceId'
インスタンスを停止する
${instance_ID} を一時的に停止する。
aws ec2 stop-instances --instance-ids ${instance_ID}
セキュリティグループ内からソースの IP と送信先のポートを取得して csv 形式で出力
セキュリティグループ内の情報からソースの IP と送信先のポートの情報を取得して csv
形式で出力する。
aws ec2 describe-security-groups | jq -r '@csv "\(.SecurityGroups[].IpPermissions[]|[.IpRanges[0].CidrIp,.ToPort])"'
jq チートシート
ダブルクォートとかは排す
従来は jq
でパースした結果からダブルクォートを削除する為に sed
とかを駆使して取り除いていたけどそんなことすること無かった。
aws ec2 describe-instances | ~/bin/jq '.Reservations[].Instances[].InstanceType' | sed s/\"//g
以下のような感じで出力される。
t1.micro t1.micro t1.micro t1.micro t1.micro
ただ、sed
とか使う必要なくて以下のように jq
だけで完結出来た。
aws ec2 describe-instances | ~/bin/jq -r '.Reservations[].Instances[].InstanceType'
おお。
select 文字列を部分一致させる
以下のように S3
のバケットのリストがあったとする。
{ "Buckets": [ { "Name": "aa-buckets", "CreationDate": "2014-01-25T09:56:47.000Z" }, { "Name": "bb-buckets", "CreationDate": "2013-12-07T05:00:44.000Z" } { "Name": "cc-buckets", "CreationDate": "2013-12-05T04:00:44.000Z" } ], "Owner": { "ID": "1234567890123456789012345678901234567890123456789012345678900000", "DisplayName": "hogehoge" } }
この出力の中から Name
に bb
が含まれる Name
を出力する場合には...
aws s3api list-buckets | jq -r '.Buckets[]|select(.Name |contains("bb"))'
とする。
csv 形式で出力させる
@sh
や @csv
を付けると任意の形式で出力することが出来る。
オプション | 出力 |
---|---|
@sh |
入力が配列の場合、出力はスペースで区切られた文字列となる |
@csv |
入力が配列の場合、出力はカンマ区切りの文字列となる |
他にも @html
や @base64
等があるが何に使うのだろうか...と思ってしまうが、とりあえず以下のようにすると...
aws ec2 describe-instances | ~/bin/jq -r '@csv "\(.Reservations[].Instances[] | [.InstanceType, .InstanceId, .Tags[0].Value])"'
以下のようにインスタンスタイプとインスタンスの ID とタグで設定した名前が csv
形式の出力となる。
"t1.micro","i-1234567a", "t1.micro","i-1234567b", "t1.micro","i-1234567c","aaaaaaaaaa" "t1.micro","i-1234567d","ccccccccccc" "t1.micro","i-1234567e","bbbbbbbbbbbb"
さらに @sh
を指定すると...
't1.micro' 'i-1234567a' null 't1.micro' 'i-1234567b' null 't1.micro' 'i-1234567c' 'aaaaaaaaaa' 't1.micro' 'i-1234567d' 'ccccccccccc' 't1.micro' 'i-1234567e' 'bbbbbbbbbbbb'
おお、スペースで区切られた出力となる。便利。
最後に
- すぐに忘れるので
- まだまだ続く