以前自動化の記事書いたけど、その前にやったこと。
aws管理画面にてIAMアクセスキーを作成
awscli
をインストール
macなので、Homebrew
で。すんなり入りました。
$ brew install awscli $ aws --version aws-cli/1.9.7 Python/2.7.10 Darwin/14.5.0 botocore/1.3.7
設定ファイル(?)を作成
$ aws configure AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXX # アクセスキー AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXX # シークレットキー Default region name [None]: ap-northeast-1 # 東京リージョン Default output format [None]: # 何も入力していない
こんな感じでファイルが作られる。
$ ls -la ~/.aws/ total 16 drwxr-xr-x 4 user staff 136 11 27 14:30 . drwxr-xr-x+ 50 user staff 1700 11 27 14:30 .. -rw------- 1 user staff 85 11 27 14:38 config -rw------- 1 user staff 241 11 27 14:38 credentials
コマンドを実行
$ aws ec2 describe-instances A client error (UnauthorizedOperation) occurred when calling the DescribeInstances operation: You are not authorized to perform this operation.
なんかエラーが。。。どうして?
どうやら、色々許可しないといけないらしい。
ポリシーを設定しにいく。
いっぱいある。Fullっぽい「AmazonEC2FullAccess」を設定。
$ aws ec2 describe-instances
おお!
ポリシー「AmazonEC2FullAccess」をアタッチしたら通るようになった。なるほど。
起動・停止
起動しているインスタンスのstatusを確認してみる
$ aws ec2 describe-instance-status --region=ap-northeast-1 --instance-ids=i-xxxxxxxx { "InstanceStatuses": [ { "InstanceId": "i-xxxxxxxx", "InstanceState": { "Code": 16, "Name": "running" }, "AvailabilityZone": "ap-northeast-1a", "SystemStatus": { "Status": "ok", "Details": [ { "Status": "passed", "Name": "reachability" } ] }, "InstanceStatus": { "Status": "ok", "Details": [ { "Status": "passed", "Name": "reachability" } ] } } ] }
SystemStatus
とInstanceStatus
の違いはなに・・・?
- 仮想マシンレベルで疎通がとれているかチェックしている「System Status Checks」
- OSレベルで疎通がとれているかチェックする「Instance Status Checks」
なるほど。わからん。
- System Status Checks 物理層のエラーチェック
- Instance Status Checks OS以上のエラーチェック
らしい。これだったらなんとなく。
とりあえず、OKじゃなかったら何かしら障害発生中ってことね。
ということで、単純にサーバのOnとOffはInstanceStatus
をチェックすればいいのね。
それではサーバを止めてみます。
$ aws ec2 stop-instances --region=ap-northeast-1 --instance-ids=i-XXXXXXXX { "StoppingInstances": [ { "InstanceId": "i-XXXXXXXX", "CurrentState": { "Code": 64, "Name": "stopping" }, "PreviousState": { "Code": 16, "Name": "running" } } ] }
おおお!
止まった!
次は起動してみる
$ aws ec2 start-instances --region=ap-northeast-1 --instance-ids=i-XXXXXXXX { "StartingInstances": [ { "InstanceId": "i-XXXXXXXX", "CurrentState": { "Code": 0, "Name": "pending" }, "PreviousState": { "Code": 80, "Name": "stopped" } } ] }
ん? pending
とな・・・?
でもコンソール上では動きがある。多分大丈夫。
ね。起動しました。
雑感
大変いいね!