#これは何?
よく書式を忘れるのでメモがてらよく使うAWC CLIの書式を纏めています。
#前提条件
下記の権限を持つIAMユーザーのクレデンシャル情報を設定済み、もしくはIAMロールを設定済み
ec2:DescribeTags
ec2:DescribeInstances
#EC2上で自分の存在するリージョン名を取得
AWS CLIではないけど、以降のコマンドで基本、リージョン情報は必須なので。
コマンド
$ curl -s --connect-timeout 2 http://169.254.169.254/latest/meta-data/local-hostname | cut -d'.' -f2
結果
ap-northeast-1
タグで自分のリージョンのプライベートIPの一覧を取得
コマンド
例:Envタグのバリューがproductionで検索
$ aws --region $(curl -s --connect-timeout 2 http://169.254.169.254/latest/meta-data/local-hostname | cut -d'.' -f2) ec2 describe-instances --output text --filters "Name=tag:Env,Values=production" --query "Reservations[].Instances[].PrivateIpAddress"
結果
192.0.2.0 192.0.2.1 192.0.2.5 192.0.2.10
自分のインスタンス名を取得
コマンド
$ aws --region ap-northeast-1 ec2 describe-tags --output text --query "Tags[?ResourceId==\`$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\` && Key==\`Name\`].Value" --region $(curl -s --connect-timeout 2 http://169.254.169.254/latest/meta-data/local-hostname | cut -d'.' -f2)
結果
web001
hostsファイル生成
コマンド
$ aws --region ap-northeast-1 ec2 describe-instances --output text --query 'Reservations[].Instances[].{Address:PrivateIpAddress, Tags:Tags[?Key==`Name`]}[].{a:Address, h:Tags[0].Value}'
複数のタグでインスタンスIDの一覧を取得
コマンド
$ aws --region ap-northeast-1 --output text ec2 describe-instances --filter "Name=tag:Group,Values=web" "Name=tag:Env,Values=production" --query "Reservations[].Instances[].InstanceId"
結果
i-11111111111111111111 i-22222222222222222