0.5から始めるAWS CLI入門 - ここまでのコマンドまとめ

AWS CLI勉強中の内容をまとめていきます。
PREV：**[0.5から始めるAWS CLI入門 - ⑤ELB](http://qiita.com/yarakaki/items/912de594faf5cdbe0946)**

下記まで行ってきましたが、使用してきた主なコマンドをまとめます。

**[0.5から始めるAWS CLI入門 - ①AWS CLIのインストールと基本設定](http://qiita.com/yarakaki/items/48e1245193ef7a942a7e)**
**[0.5から始めるAWS CLI入門 - ②基本使用](http://qiita.com/yarakaki/items/dbd1c8a4feed2936107e)**
**[0.5から始めるAWS CLI入門 - ③VPCの構築](http://qiita.com/yarakaki/items/39c035d3d66918726c61)**
**[0.5から始めるAWS CLI入門 - ④EC2](http://qiita.com/yarakaki/items/45b59ad11f17142b5817)**
**[0.5から始めるAWS CLI入門 - ⑤ELB](http://qiita.com/yarakaki/items/912de594faf5cdbe0946)**
* * *

**[AWS CLI Command Reference](http://docs.aws.amazon.com/cli/latest/)**

#AWS CLIのインストールと基本設定
##Homebrewのインストール
[Homebrew](http://brew.sh/)のTopページに記載されているコマンドを実行

```:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

##pythonインストール
brewの所有者をrootに変更しなければいけません
参考:[[Mac] はじめてのbrew](http://eskapi.bitbucket.org/2013/11/20/first_brew.html)

```:
$ ls -la /usr/local/bin/brew
$ sudo chown root /usr/local/bin/brew
$ sudo brew install python
```

##pipインストール

```:
$ sudo easy_install pip
```

##AWS CLIインストール

```:
$ sudo pip install awscli
```

##AWS CLIの設定
対話形式でキーID・アクセスキー・リージョン・出力フォーマットを設定

```:
$ aws configure
AWS Access Key ID [None]: ***********************
AWS Secret Access Key [None]: ***********************
Default region name [None]: ap-northeast-1
Default output format [None]: json
```

##profileとして使い分け
下記はadminの設定をして、使用している。

```:
$ aws configure --profile admin

$ aws ******* --profile admin
```

#基本使用
##--filters
条件指定検索
下記は名前がMain-keyのキーペアを参照する

```:
$ aws ec2 describe-key-pairs --filters "Name=key-name,Values=Main-key"
```

##--query
出力結果絞り込み
下記はキーペアの名前のみ表示

```:
$ aws ec2 describe-key-pairs --query 'KeyPairs[].KeyName'
```

#VPCの構築
##VPCの作成
下記は10.0.0.0/16のVPC作成

```:
$ aws ec2 create-vpc --cidr-block 10.0.0.0/16
```

##Nameタグ
下記はVPCにNameタグつけてる

```:
$ aws ec2 create-tags --resources vpc-@@@@@@@@ --tags Key=Name,Value=Test-VPC
```

##subnetの作成
下記はアベイラビリティゾーンAに10.0.0.0/24のsubnetを作成

```:
$ aws ec2 create-subnet --vpc-id vpc-@@@@@@@@ --availability-zone ap-northeast-1a --cidr-block 10.0.0.0/24
```

##Internet Gatewayの作成
Internet Gatewayの作成とアタッチ

```:
$ aws ec2 create-internet-gateway
$ aws ec2 attach-internet-gateway --internet-gateway-id igw-IIIIIIII --vpc-id vpc-@@@@@@@@
```

##Routes Tableの作成
Routes Tableの作成とサブネット関連付け、Internet Gatewayへのルーティング

```:
$ aws ec2 create-route-table --vpc-id vpc-@@@@@@@@
$ aws ec2 associate-route-table --route-table-id rtb-RRRRRRRR --subnet-id subnet-AAAAAAAA
$ aws ec2 create-route --route-table-id rtb-RRRRRRRR --destination-cidr-block 0.0.0.0/0 --gateway-id igw-IIIIIIII
```

#EC2

##キーペアの作成

```:
$ aws ec2 create-key-pair --key-name Test-key --query 'KeyMaterial' --output text > ~/.ssh/Test-key.pem
$ chmod 400 ~/.ssh/Test-key.pem
```

##セキュリティグループの作成
セキュリティグループの作成とIP確認、インバウンド許可へ登録

```:
$ aws ec2 create-security-group --group-name Test-SG --description "Test-SG" --vpc-id vpc-@@@@@@@@
$ curl http://checkip.amazonaws.com/
$ aws ec2 authorize-security-group-ingress --group-id sg-GGGGGGGG --protocol tcp --port 22 --cidr ***.***.***.***/32
```

##EC2インスタンス作成
EC2インスタンス作成と接続
パブリックIPいらなかったら後ろの「--asso~~」を除く

```:
$ aws ec2 run-instances --image-id ami-59bdb937 --count 1 --instance-type t2.micro --key-name Test-key --security-group-ids sg-GGGGGGGG --subnet-id subnet-AAAAAAAA --associate-public-ip-address
$ ssh -i ~/.ssh/Test-key.pem ec2-user@***.***.***.***
```

##EC2インスタンスの起動と停止と削除
これらは過去のページには載せてないのですがよく使うので

```:
$ aws ec2 start-instances --instance-ids i-HHHHHHHH
$ aws ec2 stop-instances --instance-ids i-HHHHHHHH
$ aws ec2 terminate-instances --instance-ids i-HHHHHHHH
```

##インスタンスのAMIを作成

```:
$ aws ec2 create-image --instance-id i-HHHHHHHH --no-reboot --name test_web_server
```

#ELB
##ELBの作成
ELBの作成とインスタンスの追加

```:
$ aws elb create-load-balancer --load-balancer-name Test-Web-elb --listeners Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80 --tag Key=Name,Value=Test-Web-elb --subnets subnet-AAAAAAAA subnet-BBBBBBBB --security-groups sg-ESESESES
$ aws elb register-instances-with-load-balancer --load-balancer-name Test-Web-elb --instances i-HHHHHHHH
```

##クロスゾーン負荷分散有効化
Cross-Zone Load Balancing

```:
$ aws elb modify-load-balancer-attributes --load-balancer-name Test-Web-elb --load-balancer-attributes "{\"CrossZoneLoadBalancing\":{\"Enabled\":true}}"
```

***