3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Bottle使ってAWSでAPIを動かして見た

Posted at

#はじめに
AWS上でWebAPIを動かす機会があったのでそのやり方を忘れないように、ここに綴っていきます!

##事前に準備するもの

  • AWSアカウント

以上。

##手順
###AWSマネジメントコソールにログイン
スクリーンショット 2018-11-09 14.09.07.png

その後EC2ダッシュボードへ

###サーバの設置
インスタンス作るだけ
青い「インスタンスの作成」から、
1.Amazonマシーンイメージを選択(AMIがあればそれを選択)
2.インスタンスの選択(CPUやメモリ)
3.インスタンスの設定(ネットワークなどの細かい設定)
4.ストレージの追加(サーバのストレージの増減)
5.タグの追加
6.セキュリティグループの設定(トラフィックを制御するファイアウォールのルールセット)
7.確認
を経てサーバを作成する
このとき,pemファイルを作っておくとsshやscpの際にいちいちメンドくさいことやらなくて良くなります。
私は**~/.ssh**ディレクトリにpemファイルを置きました。

####AMIの作成(必要なら)
やっぱ公式が最強
https://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/tkv-create-ami-from-instance.html

###サーバに必要なパッケージなどをぶち込む
yum で頑張る
python3(pyenv)
僕はpyenvを入れたのですが、ここではpython3.6を入れるコマンド書いときます

$ sudo yum install python36u python36u-libs python36u-devel python

bottle

$ pip install bottle

###ポートの解放
aws上でできます
インスタンスを指定し、説明欄のセキュリティグループのインバウンドに行きます
編集ボタンを押してタイプ,プロトコル,ポート範囲,ソースを設定します
スクリーンショット 2018-11-09 14.26.13.png
この例だと80,20,10080番ポートを開放してます

###実行
####ログイン

$ssh -i .ssh/***.pem ec2-user@¥¥¥¥¥.?????.amazonaws.com

###pythonのコード
bottleを用いたpythonコードを書きます

api.py
# -*- coding:utf-8 -*-

from bottle import route, run
from bottle import get, post, put, delete, request, response
import json

test_data = {"flag":"True","test":"OK"}

@get('/test')
def return_json():
	return json.dumps(test_data)
	#return test_data

@get('/test/<element:re:[a-z]+>')
def return_specific_element(element):
	print(element)
	if element in test_data:
		print("OK")
		return test_data[element]
	else :
		response.status = 404
		return {}

@post('/test/post')
def post():
	#requestはjson形式
	print(request.params.keys())
	for key in request.params.keys():
		print("key:",key)
		if key not in test_data :
			test_data[key] = request.params[key]
			print("add_data")
	print(test_data)
	return "succeess"

run(host='0.0.0.0',port=10080,debug=False,reloader=True)

テスト用です
bottleについて詳しく知りたい人はここをみるといいと思います

####コンソールから実行

$ python api.py

すると・・・

Bottle v0.12.13 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:10080/
Hit Ctrl-C to quit.

みたいな感じのが出ます。これで無事動いています
この例だと10080ポートを指定しているので、
AWSのインスタンスのURL:10080/test/flag
を叩くと・・・
スクリーンショット 2018-12-04 16.07.24.png
上のコードのtest_dataの中身が確認できています

##おまけ
AMI : インスタンスの作成に必要なソフトウェア構成 (OS、アプリケーションサーバー、アプリケーション) を含むテンプレートです

###サーバで使えるコマンド
ファイル送る時

$ scp -i .ssh/***.pem -r (ローカルの指定のディレクトリ) ec2-user@¥¥¥¥¥.?????.amazonaws.com:(サーバの指定のディレクトリ)

プロセス情報を見る & 削除

$ ps -ef | grep ***
$ kill (process number)

##感想
やっぱ定期的に使ってないと忘れるよね

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?