LINE bot用の環境をコマンド1つで構築する


動機

  • 毎回LINE botを作る時に環境を構築するのに手間取ってプログラミング始める前に萎えてしまう
  • AWSをサービス開発で使っていると言えるとなんとなくかっこいい気がする

目標

  • 何もないところから出来るだけ簡単におうむ返しbotの作成

必要知識

  • 独自ドメインをAWSのEC2インスタンスに割り当てることが出来る
    • EC2,ElasticIP,Route53あたりで調べたら先人たちの知恵が無限に出てくる
    • インスタンスは80番,443番ポートを解放しておいてください
  • docker-composeが使える
    • 先人たちの知恵を参考にする
  • LINE DeveloperでLINE botの最低限の設定が出来る
    • 同じく先人たちの知恵を…
    • CHANNEL_ACCESS_TOKE, CHANNEL_SECRETの取得
    • webhookのURLには使用するドメインのルートパスを記入して置いてください
    • 使用ドメイン => xxxx.xx
    • Webhook URL => https://xxxx.xx/

実践

はじめに

  • この記事を書いている中の人はdockerやAWSをちゃんと触り始めて2週間程度の素人なのでセキュリティなどに一切考慮しておりません
  • この記事を参考にしたシステムにおける責任は一切負いかねますのでご注意ください
  • また、修正・改良などの意見はお気軽に。てか、むしろ教えていただけると非常にありがたいです

SSH接続

とりあえずEC2にSSHで接続する
* SSHに使うポートの解放もお忘れなく

git hubからソースのダンロード

git clone https://github.com/yakult1995/easy-line-bot.git

各自の環境を反映する

ダウンロードしてきたフォルダのdockerフォルダの中のdocker-compose.ymlの

  • DOMAIN_NAME
  • USER_MAIL
  • CHANNEL_ACCESS_TOKEN
  • CHANNEL_SECRET

をそれぞれの環境に合わせて変更する

幸せになれる魔法

cd easy-line-bot/docker
docker-compose up -d --build

しばらく待つ

LINEからボットにメッセージを送る

作ったボットにメッセージを送信しておうむ返ししてくれれば終わり

その他

docker-compose up -d --build

の間のログは

docker-compose logs -f

で見ることが出来る
何かしらのエラーで起動出来なかった場合ここで原因を調べる

ぼやき

Dockerfileの使い方分からずに何回も試行錯誤してたら
letsencryptの証明書更新し過ぎてしばらく証明書取りに行けなくなったせいで何個のドメインが犠牲になっただろうか…

最後に

この記事を書いてるときに色々調べてたら
Lambda使ったbotのシステム構築多くて次はそれで試してみようと思った