Aws cli2. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
1
自己紹介
? 外山 寛
– 株式会社イプロス
– チーフエンジニア
? Github
– @toyama0919
– https://github.com/toyama0919/
? Twitter
– @god_tongue_19
3. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】2
AWS-CLIとは1
インスタンスメタデータについて2
IAM ROLE3
Jqコマンド4
イプロスの事例紹介5
まとめ6
AWS-CLI
4. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
3
AWSと他のVPSや
クラウドサービス
との違いは何で
しょうか?
5. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
4
他のVPSサービスとの違いは。。
インフラがプログラミングできる
ほぼ全てのサービスに対してAPIが用意されてい
る。
基本的に画面からできることは、APIからもでき
ると考えて良い。
リージョン、アベイラビリティゾーン
複数リージョン、複数データセンター。
6. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
5
昨今叫ばれる
プログラマブルな
インフラ
7. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
6
CLI使ったこと
ある方?
8. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
7
AWSのSDKは
たくさんあります。
9. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
8
AWS SDK
Java
Ruby
Node.js
.NET
PHP
Python
10. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
9
おすすめなのは
AWS-CLI
(Python)
11. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
10
AWS-CLIの特徴1
2012年12月にリリース
ほぼ全てのサービスが網羅されている
。
アクセスキーやシークレットキーの設
定が1箇所でよい。
サブコマンドの補完が可能。(これ結構
重要!)
Python製
12. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
11
AWS-CLIの特徴2
結果がJSON(textも可能)
IAM ROLEを使って認証情報をサーバ
ーから隠蔽できる(後述)
13. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
12
# easy_installを使えるようにする
$ sudo yum install python-setuptools
# インストール
$ sudo easy_install aws-cli
インストール方法
14. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
13
# 作成したインスタンス表示
$ aws ec2 describe-instances
# RDSのインスタンスを表示
$ aws rds describe-db-instances
# redshiftのクラスタ表示
$ aws redshift describe-clusters
コマンドの例(EC2の場合)
15. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
14
AWS-CLIの対応サービス
EC2
RDS
Cloud Watch
Auto Scaling
Redshift
EMR
ELB
etc…
16. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
15
# githubからclone
$ git clone https://github.com/aws/aws-cli
# bash
$ complete -C bin/aws_completer aws
# zsh
$ source bin/aws_zsh_completer.sh
補完設定
17. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
16
環境設定方法は3つ
1. サーバーの環境変数
1. 設定ファイル
2. IAM ROLE
18. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
17
# アクセスキー
$ export AWS_ACCESS_KEY_ID=<access_key>
# シークレットキー
$ export AWS_SECRET_KEY_ID=<secret_key>
# リージョンを省略したい場合
$ export AWS_DEFAULT_REGION=ap-northeast-1
サーバー環境変数による設定
19. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
18
ちょっと
いけてないですね。
20. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
19
問題点は?
開発環境と本番環境で認証情報を分け
ている場合、毎回環境変数を切り替え
なければいけない。
リージョンが異なる環境で開発をして
いる場合、リージョンを切り替えなけ
ればいけない。
--regionで毎回指定すれば可能。
21. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
20
もう少し
楽をしましょう。
22. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
21
export AWS_CONFIG_FILE=/path/to/config_file
[default]
aws_access_key_id=<default access key>
aws_secret_access_key=<default secret key>
region=ap-northeast-1
[setting2]
...
[setting3]
...
コンフィグファイルによる設定
23. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
22
ap-northeast-1
Setting1
ap-southeast-1
Setting2
$ aws ec2 describe-instances –profile setting1
$ aws ec2 describe-instances –profile setting2
24. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
23
環境変数 設定ファイルのキー 説明
AWS_DEFAULT_PROFILE 設定ファイルで管理する際の
プロファイルのキーを指定。
AWS_DEFAULT_REGION region デフォルトのリージョンを指
定できる。
AWS_CONFIG_FILE 設定ファイルで管理する際の
パス。
AWS_DEFAULT_OUTPUT output JSONかtextか
AWS_SECRET_ACCESS_
KEY
aws_secret_access_
key
シークレットキー
AWS_ACCESS_KEY_ID aws_access_key_id アクセスキー
25. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
24
更に楽をすると!
26. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
25
IAM ROLEによる設定
アクセスキーをサーバーに置かなくて
良い。
権限を集中管理できる。
リージョンの指定は必要
27. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
26
IAM ROLEの設定
ここ
28. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
27
IAM ROLEによる設定
ec2
ec2
IAM
サーバーに認証情報がな
ければIAMを参照して認
証情報取得
29. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
28
IAM ROLEの注意点
ローカルマシンなどでAWS-CLIを使う
場合は、設定ファイルを使って実行す
ることになります。(自分のマシンに
IAM ROLE は振れない)
権限を変更すれば、その権限が即時に
反映されるので注意。
30. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
29
イプロスでの使用例(RDS)
同期
本番 ステージング
31. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
30
イプロスでの使用例(ELB)
ELB
障害検知
CLIでELB
から切り離し
EC2 監視
32. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
31
そんな便利なAWS-
CLIですが、
33. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
32
インスタンス
メタデータ
と組み合わせる。
34. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
33
インスタンスメタデータとは?
自分自身のデータを自分で取得できる
自分自身のElasticIP、インスタンスID、リージョ
ン、アベイラビリティゾーンなど。(※後述)
主にEC2で使用
cURLなどでデータを取得できる。
35. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
34
取得できるメタデータ
AMI-ID
インスタンスID
プライベートIPアドレス
所属しているセキュリティグループ
アベイラビリティゾーン
アクセスキー、シークレットキー
36. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
35
# メタデータから取得できる一覧
$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
..
cURLによるメタデータの取得
37. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
36
#インスタンスID取得
$ curl http://169.254.169.254/latest/meta-data/instance-id
i-30d73534
#グローバルDNS取得
$ curl http://169.254.169.254/latest/meta-data/public-
hostname
ec2-54-250-117-207.ap-northeast-
1.compute.amazonaws.com
cURLによるメタデータの取得
38. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
37
先ほどの図
ELB
障害検知
CLIでELB
から切り離し
EC2 監視
39. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
38
#ロードバランサーから切り離し
$ aws elb deregister-instances-from-load-balancer --
load-balancer-name ${ELB} --instances `cURL
http://169.254.169.254/latest/meta-data/instance-id`
#ロードバランサーと接続
$ aws elb register-instances-with-load-balancer --
load-balancer-name ${ELB} --instances `cURL
http://169.254.169.254/latest/meta-data/instance-id`
コマンドにするとこんな感じ
40. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
39
Jqコマンドの特徴
command-line JSON processor
JSONを見やすく整形してくれる
インデント
カラーリング
公式
http://stedolan.github.io/jq/
高速に動く
詳しくは公式で!
41. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
40
# 最も簡単な例
$ echo ?{“id” : 1 , “name” : “toyama”}? | jq .
# awsコマンドと連携
$ aws ec2 describe-instances | jq .
# もちろん外部のJSONとも連携可能
$ curl -s https://graph.facebook.com/toyama0919 | jq .
jqコマンド
42. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
41
AWS-CLIの問題点
もちろん対応していないサービスもあ
ります。
Cloud Front
DynamoDB
SimpleDB
参考URL
http://aws.amazon.com/cli/
https://github.com/aws/aws-cli
43. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
42
まとめ
AWS-CLIでAWSの運用を自動化しまし
ょう。
認証情報は極力サーバーに置かないほ
うがよい。
IAM ROLE使いましょう。
44. COPYRIGHT ? 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
AWS-CLI
43
ご静聴ありがとう
ございました。