pythonを利用したawsプログラミング勉強会 (第1回) ec2超基礎編

29
テキスト Pythonを利用したAWS CLI プログラミング勉強会 第1回 PythonでEC2を操作しよう (超基礎編 )

Upload: kiminori-yokoi

Post on 19-Jul-2015

171 views

Category:

Technology


1 download

TRANSCRIPT

テキスト

Pythonを利用したAWS CLIプログラミング勉強会第1回 PythonでEC2を操作しよう (超基礎編)

本勉強会の目的

参加者が、AWS上のリソースをAWS Management Console経由ではなく、Pythonプログラムから自由自在に操作できるようになること。

「AWSをプログラムで操作する」という視点を持ち新たなビジネス、サービスを発想する機会としたい。

今のAWSビジネスが どういう状態になったら良いのか、 ゴールを考える「ただ導入するだけ」から「効率よく導入する」への転換をしたい。

「ただ使ってもらうだけ」から「効果的に使ってもらう」への転換をしたい。

つまり、開発側もお客様も同時に効率良くなるように転換をしたい。

ゴールに辿り着くまでの アプローチ(1) これまでのノウハウを汎用化して、  人力で助けるコンサルティングサービス  のように提供する  EX) なんとか支援サービス

(2) AWS標準でやれることで、面倒と感じる  ものを自動化してサービスとして  提供して使ってもらう  EX) 自動災害復旧サービス

今回は (2) のアプローチから攻めていきます

gihyo.jp, 雲を駆け抜けろ 第7回 MSPから見たクラウドの実態, 2012/02/18 http://www.atmarkit.co.jp/ait/articles/1502/05/news011.html

Pythonを利用した AWS CLIプログラミング勉強会

なぜPythonなのかBash: Linuxのみ。

PowerShell: Windowsのみ。

Java: 重い。(t2.microで並列で動かしたら時が止まった)

JavaScript: Webのプラットフォームでしか動かない。

Python: Win/Linux両方いける。    ダブルメンテ不要。簡単にJSON使える。    軽い。

Pythonには2系と3系があります。今は2系の方が安定していますが、そのうち3系に 置き換わると言われています。(完全に置き換わるのはいつか分かりませんが・・・)

ということで、3系でプログラミングできるようにしましょう。

まずPython3をインストールしましょう。Windows: 以下リンク先でインストーラを入手。インストール完了後、環境変数を通す。https://www.python.org/

Linux: 以下リンク先の通りにインストール。 http://kazsoga.com/amazon-linux-python3-install/

Linux環境では2系環境と 3系環境が共存します。たいてい、2系がプリインストールされています。

単にpythonと打って実行すると「2系」python3と打って実行すると「3系」が動きます。

「python3」と打ってみましょう。

Python3のシェルに 入れたら成功です。

次にPython用AWS SDKをインストールしましょう。

http://aws.amazon.com/jp/sdk-for-python/

Mac/Linuxなら以下1コマンドで入ります。

「boto」がPython用AWS SDK!

シェルで「import boto」と打ってみましょう。

確かに、importできることが 確認できました。

ローカルで開発するのであれば、 IAM Userを作りましょう。

Access Keyと Secret Keyが必要!

楽に開発するなら 「eclipse + PyDev」

コードのエラーも すぐ分かります。

これで準備ができました。

手始めに「Hello World」 してみましょう。

Python3がちゃんと動いていることを

確認できました。

シェルで「import boto.ec2」と打ってみましょう。

今回はec2を操作します!必ず、ピンポイントにimportが必要です。

AWSへの認証を通しましょう。EC2上の開発でIAM Roleが割当たっている場合、以下のメソッドでOKです。

ローカルの開発では、Access KeyとSecret Keyがないと認証できません。

connect_to_region()メソッド

IAM Roleがないと、 credentialsを確認しろと怒られてしまいます。

ローカルではSecret Keyと Access Keyが必要です。メソッドの引数に渡します。

IAM Userごとに固有IAM Userごとに固有

引数にAccess KeyとSecret Keyを渡します。 (※ HTTPSで通信します)

↑ 認証に成功しました。

AMIからEC2を起動してみましょう。run_instances()メソッドを使えば1行です。

ec2_run_instance = conn.run_instances( image_id="ami-cbf90ecb", instance_type="t2.micro", monitoring_enabled=False, subnet_id="subnet-60389f17", tenancy=None, ebs_optimized=False)

AMIのIDや、インスタンスタイプ どこのサブネットに立てる?

など指定します。 詳細はAPI Docsを見てください。

みんな違う

他のEC2系のコマンドを知りたい場合は以下を参照

http://boto.readthedocs.org/en/latest/ec2_tut.html

DEMO

次回の勉強会は?第2回 PythonでEC2を操作しよう (基礎編)

EC2系コマンドをひと通り使えるようにする。

コマンドを組み合わせて使えるようにする。コマンドの組み合わせを、関数として定義し、使いまわしできるようにする。

運用・管理の効率化を、EC2系コマンドだけの範囲で考えてみる。

レベル1 レベル2 レベル3

EC2を 起動/停止/終了

Management Consoleから 手動で実行する

API実行サーバから スケジュールで

実行する??

EBSを 作成/削除

Management Consoleから 手動で実行する

?? ??

EC2の ステータスチェック

Management Consoleから 手動で実行する

API実行サーバから スケジュールで

実行する??

EBSの Snapshot取得

Management Consoleから 手動で実行する

API実行サーバから スケジュールで

実行する??

How to

END