AWSでPythonを定期実行しようとした話
AWSでPythonを定期実行
ここ最近、Twitterを運用するよりもTwitterのシステムを作ることにハマってしまったしばっちですが、やっとアプリケーションが完成し、クラウド上で実行するところまで来ました。
しかし、アプリケーションが完成してはや2週間、まだクラウド上で実行ができておりません。
- Xサーバーで実戦
- Herokuで実戦
- AWSのLambdaで実戦
議事録として、何で失敗したのかをここに記載しておきます。
Xサーバーで実戦→ssh接続ができずに、そもそもpython環境を作れなかった(エラーの原因は不明・・・)
Herokuで実戦→Herokuがなんなのかがよくわからず、諦めた(笑)
AWSのLambdaで実戦→デプロイは完了するものの、pythonとnumpyのバージョンエラーでテストが実施できずに挫折(同様のエラーが起きている方はネット上にいたのですが、知識不足のため解決策の理解ができなかった)
これらはことごとく失敗し、ちょっと前に学んだEC2上でPythonを実行し、それをcronを用いて定期実行してみることにしました。
簡易プログラムであれば、ネット上に転がっている情報で実行はできたものの、今回のアプリケーションが「Twitterと連携」「スプレッドシートと連携」など複雑なことをしているので、今「モジュールエラー」というわけわからない部分で止まっています。
cronを利用せずにアプリケーションを正常に動かすことができているため、モジュールのインストールは完了している。
考えられるのは、めんどくさくて対応しなかった「pyenv」なる仮想環境が原因なのではと仮説を立てた。
とりあえず今日はここまで進んだので、明日の自分に期待をし、今から新規事業のコンテンツ作成をしていこうと思います。
※今までの経験上、明日には定期実行を問題なくできそうな予感が満載です(笑)
20220224追記
Pythonの仮想実行環境を作成し、実行環境をルート上から変更したところ、無事自動でPythonの実行ができるようになりました。
アプリケーションの定期実行はできたのですが、Twitterとの連携ができておらず、ssh上で直接実行した場合はうまくいくのに、cron上ではTwitterに反映されない。
理由がわからないのですが、またさらに明日の自分に期待して、別の仕事を進めていこうと思います。