AWSいじり始め

今更ですが AWS を触る機会が出来たので、最初にやったことのメモを残します。
AWS で Flask 使って Web ページが見れるようになるまで。
boto とかその辺は今後で。


※アカウントの作成方法やらは割愛!

Key Pair 取得

コンソールの NETWORK & SECURITY の Key Pairs から「Create Key Pair」押下
適当な名前(例:testApp)をつけて
適当な場所(例:.ec2 フォルダ)に保存

セキュリティ ルール追加

コンソールの NETWORK & SECURITY 内 Security Group でルール追加

「Create a new rule」で「HTTP」を選択して「Add Rule」ボタン押下
「Apply Rule Changes」ボタン押下

インスタンス起動

インスタンスを作成して起動
AMI は「Amazon Linux AMI 2012.09」で良いと思う。


接続

作成したインスタンスに接続
ドメインは上の画像で赤丸囲った所

$ ssh -i .ec2/testApp.pem ec2-user@ec2-XXX-XXX-XXX-XXX.ap-XXX.compute.amazonaws.com


もし次のようなエラーが出た場合

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '.ec2/testApp.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ec2/testApp.pem
Permission denied (publickey).

意訳:0644 権限だとみんなが読めてヤバイから権限変えれ!
というわけで、権限修正。

$ chmod 0600 .ec2/testApp.pem

必要なものをインストール

とりあえず pip のち Flask くらいかなー。

$ sudo easy_install pip
$ sudo pip install Flask

本体を作る

簡易版なので main.py を適当に作る

from flask import Flask, Response
app = Flask(__name__)


@app.route("/")
def root():
  return Response("Hello, AWS")


if __name__ == '__main__':
  app.run(host="0.0.0.0", port=80)

host と port の指定は重要。

起動

ローカルの Flask と同じく起動。
port 80 で起動するので sudo が必須。

$ sudo python main.py

あとは

http://ec2-XXX-XXX-XXX-XXX.ap-XXX.compute.amazonaws.com

で繋がるハズ。


その他

Mercurialyum 使うとすんなり入った。

sudo yum install python-setuptools
sudo yum install python-devel
sudo yum install mercurial

以上

何か適当すぎるけど、無料な範囲で遊ぶ程度ならこれくらいで。