Contenu connexe
Plus de Hiroshi Toyama (7)
Aws cli
- 2. 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
ご静聴ありがとう
ございました。