Line Messaging APIを使ってみた

前回登録を済ませたLine Messaging APIを呼び出すウェブアプリを作成します。今回はPythonを使って作ってみることにします。サーバーはAmazon EC2で立てます。
GitHubで公開されているLINE Messaging APIのサンプルコードから、エコー返すだけのFlaskアプリをダウンロードします。
https://github.com/line/line-bot-sdk-python/tree/master/examples/flask-echo
FlaskとはPython用のウェブアプリフレームワークのひとつで、ライトウェイトなことが特徴です。
プログラム中の下記の部分をLINE Business Centerで登録した内容に変えておきます。
channel_secret = os.getenv(‘LINE_CHANNEL_SECRET’, None)
channel_access_token = os.getenv(‘LINE_CHANNEL_ACCESS_TOKEN’, None)
ここで、Amazon EC2にサーバーを構築します。
(1)下記を参考に、Amazon マシンイメージに新しいインスタンスを作成します。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EC2_GetStarted.html
ステップ1
「クイックスタート」から「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type – ami-be4a24d9」を選択します。
ステップ2
t2.microを選んで「確認と作成」
ステップ7:インスタンス作成の確認
セキュリティグループの編集(ステップ6を開く)
「ルールの追加」でHTTPとHTTPSを追加し、「確認と作成」
(2)sshで接続する
下記は接続するための秘密キーを.ssh/aws1.pemに保存した場合の例です。MacやLinuxなら簡単です。WindowsでもCygwinや、Windows 用のOpenSSHが利用できます。
ssh -i .ssh/aws1.pem ubuntu@ここに作成したサーバーのホスト名を入れます
(3)Apacheとmod-wsgiをインストール
ApacheからPythonのウェブアプリ用の規格であるWSGIを呼び出すための設定をします。
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi
ここで、サーバーへのHTTP接続を確認してください。
(4)Python環境の作成
sudo apt-get install python-pip
sudo pip install flask
sudo pip install line-bot-sdk
mkdir ~/pricebot
sudo ln -sT ~/pricebot /var/www/html/pricebot
mkdir ~/pricebot/data
chmod 777 ~/pricebot/data
上記で作成した~/pricebot以下に、先ほどGitHubからダウンロードしたプログラムをpricebot.pyとしてアップロードします。さらに、同じフォルダーにpricebot.wsgiを下記の内容で作成します。
import sys
sys.path.insert(0, ‘/var/www/html/pricebot’)
from pricebot import app as application
sudo vi /etc/apache2/sites-enabled/000-default.conf
上記コマンドで/etc/apache2/sites-enabled/000-default.conf を編集し、DocumentRoot /var/www/html の直後に下記を追加する。
WSGIDaemonProcess pricebot threads=5
WSGIScriptAlias / /var/www/html/pricebot/pricebot.wsgi
WSGIProcessGroup pricebot
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
Apache2を再起動します。
sudo apachectl restart
(5)SSLの設定
AWSでロードバランサーを作成し、HTTPS通信を(4)までで作成したサーバーへのHTTP通信に変換できるように設定します。AWSのCertificate Managerを使えば、無料のサーバー証明書を作成してロードバランサーに割り当てることができます。
(6)LINE Business CenterにURLを設定
作成したウェブアプリのURLをbotの設定画面に登録して準備は完了です。
LINEにbotのQRコードを読み込ませて、公式アプリを追加します。
何か文字を打ってみましょう。