0
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 1 year has passed since last update.

TwitterのbotをAWS Lightsailで稼働させてみる【Python】

Posted at

やりたいこと

文章を自動生成するTwitterのbotを自作して公開したい。
自動生成するプログラムとTwitterに投稿するプログラムは前回までで出来たので、今回はAWSを使って公開するところまでをやる。

環境

Windowsで開発したプログラムをAWSに上げる。

開発環境

・Windows 10
・Python 3.10.7

本番環境

・AWS Lightsail(Amazon Linux 2)
・Python 3.7.10

やったこと

1.AWSのアカウント作成
2.AWS Lightsailのインスタンス作成
3.サーバに各種インストール
4.LightsailサーバーへSFTP接続
5.cronの設定

1.AWSのアカウント作成

まず、botを載せるサーバを用意する。
今回は勉強も兼ねてAWSにします。
アカウントの作成時に、英語で住所を入力するように求められたので、以下のサイトを参考にしました。

2.AWS Lightsailのインスタンス作成

botの公開先はいくつか候補があるようです。
・EC2
・Lightsail
・Lambda
今回作成したbotはSQLiteを含むのでLambdaは除外、EC2は設定が大変らしいので、Laightsailを使ってみます。

まず、インスタンス作成画面を開きます。
ロケーションは東京、プラットフォームはLinux/Unixを選択します。
image.png

次に設計図?の選択。
今回はbotを定期的に動作させるだけなんで、”OSのみ”を選択、OSはAmazon Linux 2を選択します。
image.png

オプションについてはデフォルトのまま。
image.png

料金プランは一番安いやつで大丈夫でしょう。
この料金体系がわかりやすいのはLightsailの利点ですね。
image.png

任意でリソース名を入力します。
キーについての設定はそのままにしました。
最後に「インスタンス作成」ボタンをクリックして完了です。
image.png

すると、ホームに作成したインスタンスが表示されます。
(黒く塗りつぶしたところはIPアドレスです)
image.png

3.サーバに各種インストール

インスタンス作成に成功したらサーバに接続してみましょう。
表示されているインスタンス右上のオレンジの四角マークをクリックするとLinuxのターミナルが開きます。
そしたらbotに必要な以下のものをインストールしました。

・MeCab
・unidic-lite
・mokrovify
・tweepy

このとき、ハマったのが、まずPythonのコマンド。

[ec2-user@ip-xxxx ~]$ python --version
Python 2.7.18
[ec2-user@ip-xxxx ~]$ python3 --version
Python 3.7.10

最初、python --verserionとうって、バージョンが2系なのに戸惑いました。
3系を使うならpython3とうてばいいんですね……。

これはpipコマンドも同様で、python3のpipを使うならpip3とうちます。

[ec2-user@ip-xxxx ~]$ pip --version
pip 20.2.2 from /usr/lib/python2.7/site-packages/pip (python 2.7)
[ec2-user@ip-xxxx ~]$ pip3 --version
pip 20.2.2 from /usr/lib/python3.7/site-packages/pip (python 3.7)

それで次に以下のライブラリをインストールしたのですが、
・MeCab
・mokrovify
・tweepy
どうやらこれだけではMeCabが動かないようです。
後の工程でpyプログラムを実行して発覚したのですが、MeCab.Tagger("-Owakati")の記述のある個所でRuntimeErrorが発生します。
以下のサイトを参考にしてunidic-liteというものもインストールします。

これで必要なもののインストールが完了しました。

4.LightsailサーバーへSFTP接続

サーバの準備は出来たのでいよいよbotをアップロードします。
使うのはFileZillaです。
LightsailのFTP接続の方法については公式ドキュメントを参考にしました。

接続できたらファイルをアップロードします。
試しにターミナルから直接プログラムを叩いてみて動作することを確認しました。

5.cronの設定

あとは、cronを設定してbotを定期的に起動させるだけです。
今回のbotは自動生成した文章をツイート機能と、僕のアカウントからツイートを取得してDBに格納する機能の2つあります。
ファイルもそれぞれで2つあるのでcronも2つ設定します。

50 * * * * /bin/python3 /home/ec2-user/hern/learn.py > /home/ec2-user/log/cron.log 2>&1
00 * * * * /bin/python3 /home/ec2-user/hern/post.py /home/ec2-user/log/cron.log 2>&1

上記の50 * * * *00 * * * *は、それぞれ、毎時50分に実行する。毎時00分に実行する。です。
以下のサイトを参考にしました。

python3の場所は

sudo which python3

で調べました。
また、末尾の> /home/ec2-user/log/cron.log 2>&1は、エラーが発生した際にログに出すための記述です。

ともかく、これで設定は完了。

botのアカウントを見てみましょう。
image.png

うん。ちゃんとツイートしてます。いいですね!

今後はフォローバック機能や、リプライに反応する機能、生成する文章のブラッシュアップなどを目指したいと思います。

参考資料

0
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
0
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?