AWS Lambda × selenium でXの自動フォローシステムを作ろうと思ったが、タスクスケジューラーで妥協した

AWS

作業の流れ

1.ローカルでseleniumのコードを書く。

2.ローカルでテスト。

3.AWS Lambda を利用してseleniumが動くよう設定する(PCをシャットダウンしている時でも稼働させる)

4.バージョンが合わずエラーが出たので、解決策を模索

5.LambdaはあきらめてWindowsのタスクスケジューラーで実装(PC起動中のみ稼働する)

参考サイト&注意点

今までSeleniumを使ったことがなかったのですが、

サイトを開く -> サイトから特定の要素を取得 -> 任意の動作をさせる -> 終了

というシンプルな物だったのですぐに理解できました。

pythonはライブラリを入れるのも簡単で、気軽に弄れてありがたいです。

Lamdaで実装する際は、下記のサイトをメインにpythonやselenium、その他利用しているライブラリのバージョンを最新のものに読み替えて作業していました。

【AWS Lambda】Pythonのseleniumで定期実行する
AWS Lambda PythonでSeleniumを使える環境を構築する | DevelopersIO
データアナリティクス事業本部のueharaです。 今回はAWS Lambda (Python)で、WebアプリケーションをテストするためのポータブルフレームワークであるSeleniumを使える環境を構...

しかし、勝手に違うバージョンで作業していたせいで後々困ることになりました。

問題点

AWS Lambda 上でseleniumuを動かす場合、headless で動かすことになります。

※seleniumにはheadfulとheadless があり、ブラウザ画面を表示させて処理を実行するか、しないかという違いがあります。その他にも細かい違いあり。

ローカル環境ですべて最新verで動かしていた限りでは、問題なく機能していたのですが、

AWS Lambdaに設定するとバージョンが合わないせいでエラーが発生してしまいました。

調査を行った結果、下記のサイトが非常に参考になりました。

AWS Lambda上でheadless-chromiumを動かすときのchromedriverとheadless-chromiumのバージョンの組み合わせ調査
AWS Lambda上でheadless-chromiumを動かすときに、chromedriverとheadless-chromiumの組み合わせによっては動作しなかったので、いろいろなバージョンの組...

どうやら、chromedriverheadless-chromiumのバージョンによって動作しない場合があるらしく

大抵の場合動作しないことがわかりました。。(ごく一部の組み合わせでのみ動く)

確認の為、記載されているchromedriver及びheadless-chromiumをLambdaにて設定した所

確かにうまく機能しました。

しかし、基本的にverは最新のものを使いたい派(セキュリティ面の不安もあるので)の私は

chromedriverやheadless-chromiumのバージョンを下げるという対応に納得できませんでした。

最新verで機能する組み合わせを模索

最新verで動くようにするにはどうすればいいかを調査しました。

headlessではなくheadfullで Lambdaを動かす方法や、そもそもLambdaではなく別のクラウドサービスで実装する方法なども調べました。

結果、そもそもクラウドサービスを利用せずとも私のPCは常時稼働していることが多いので、

Windowsのタスクスケジューラーからpythonファイルを定刻に実行するよう設定すれば要件は満たせると判断しました。

反省点

seleniumにはheadlessやheadfullがあることを理解していなかった。

初めて利用するツールなのにあまり内容を調査せず実装が先走ってしまった。(よく知らないツールやシステムはさっさと触って覚えるのも大事ですが、事前調査を怠るとつけが回ってきます)

バージョンの組み合わせ、動作確認をしなかった。

実際の業務ではまず序盤に調べるようなことですが、個人での開発だったので『全部最新なら多分行けるだろう』の精神でやってしまいました。

感想

今回ツールを作ろうと思ったのは、XのAPI利用料が高すぎるせいだったりします。

本当はAPIを利用して作成した方が保守性などの観点からも長く利用できる(seluniumはサイト構成が変わる度に修正しなければならない可能性がある)と思ったのですが、

利用料を調べて、明らかに個人で出せる金額ではなかったので断念しました。

また、開発に移る前によさげなXのフォロー自動化ツールがないかも調べたのですが、私が求めているような機能を持ったものが見つかりませんでした。

おそらく、各企業サイドもAPIの価格がネックになっている&TwitterAPIが予告なく変更や終了された前例があるので、ツール開発に下手に手が出せないでいるのかなと思っています。

逆に言うと、こういう時期に一定以上のクオリティのツールを出せれば利用者はかなり見込める気がします。X APIの個人向け価格がもう少し安くなれば、一攫千金を狙ってシステムを作ってみたいです。

タイトルとURLをコピーしました