はじめに
- とりあえずメモ
参考
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'
おお、スペースで区切られた出力となる。便利。
最後に
- すぐに忘れるので
- まだまだ続く