5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS CLI 逆引きメモ

Last updated at Posted at 2015-07-15

使ったことのあるコマンドのメモ。使ったものは順次追記していきます。

はじめに

動機

シェルでワンライナーしたい

--output text は"特定の( InstanceId などの)値を持つ何か"を取得したい場合に便利。
「特定の値」を持つ何かを手打ちしてもいいんです。が、そこで「なんかスマート感がないんだよなぁ...」などと思ったらシェル芸の素質アリ。ワンライナー始めましょう。ちなみに私はまだまだシェル芸新卒1年生ぐらいのもんです。

filtersの表記

--filters オプションで指定するName=XXX,Values=XXXですが、Nameの表記が落とし穴です。
例えばEC2のdescribe-instancesなどで出てくる InstanceId 、これを --filtersで検索しようとするときは

# [属性名] <---> [filters書式]
# InstanceId <---> instance-id
aws ec2 describe-instances --filters "Name=instance-id,Values=XXXXXXXX"

のように、 単語の頭を小文字 にした上で 単語間をハイフンで区切る 表記にする必要があります。

単発コマンド

EC2をタグ検索してInstance IDを取得

めちゃくちゃ便利なんだけど毎回どこかでタイポしてしまう。

aws ec2 describe-instances --filters "Name=tag:MyTagKey,Values=MyTagValue" --query "Reservations[].Instances[].InstanceId" --output text

ちなみに jq コマンドを使うと以下のような感じになる。

# タグ検索したEC2のInstanceId取得 jq版
# -rオプションは 別名"--raw-output"
# このオプションをつけない場合、二重引用符付きで文字列(InstanceId)が返される
aws ec2 describe-instances --filters "Name=tag:Project,Values=tech-cource" | jq -r .Reservations[].Instances[].InstanceId

StopしていないEC2インスタンスを列挙

※正確にはStop, Terminated 以外のステータスになっているインスタンスの列挙です。

aws ec2 describe-instances --filters "Name=instance-state-name,Values=pending,running,shutting-down,stopping"

StopしていないEC2インスタンスを列挙(全リージョン)

上記の(簡易)全リージョン版。出力結果はそのままだとちゃんとしたJSONにならないので注意。いい感じにまとめたい。

for rg in ap-northeast-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-west-1 sa-east-1 us-east-1 us-west-1 us-west-2 ;do aws ec2 describe-instances --region $rg --filters "Name=instance-state-name,Values=pending,running,shutting-down,stopping" ; done```

## Default VPCのIDを取得

```bash
aws ec2 describe-vpcs --filters "Name=is-default,Values=true" --query "Vpcs[].VpcId" --output text

AutoScaling Group の名前を一覧

aws autoscaling describe-auto-scaling-groups --query AutoScalingGroups[].AutoScalingGroupName --output text

複合系

バッククオートも使ってちょっと複雑な処理をワンライナーしてみます。

Default VPCに関連付けられたSGを取得

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=`aws ec2 describe-vpcs --filters \"Name=is-default,Values=true\" --query \"Vpcs[].VpcId\" --output text`"

Default VPCに関連付けられたSGのGroupIdを取得

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=`aws ec2 describe-vpcs --filters \"Name=is-default,Values=true\" --query \"Vpcs[].VpcId\" --output text`" --query "SecurityGroups[].GroupId" --output text

ELB配下インスタンスのIPを取得

aws ec2 describe-instances --instance-ids `aws elb describe-load-balancers --load-balancer-names some-elb-name --query LoadBalancerDescriptions[].Instances --output text` --query Reservations[].Instances[].PrivateIpAddress --output text
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?