blogソフトウェア開発と人生をやっていきますこの広告は、90日以上更新していないブログに表示しています。PythonWebサイトの状況を監視するためのスクリプトを動かしたいというシチュエーションが発生することがあります。典型的な例としてECサイトの在庫監視などがあると思います。Switchの在庫状況を監視して通知するスクリプトを動かしている人もいるもいるのではないでしょうか。*1在庫確認のようなシチュエーションでは常時起動しているPC、すなわちサーバに相当するものを用意しなければなりません。VPSを借りる人も多いと思いますが、スクリプトを動かすだけに使用するには少々オーバースペックです。Lamdaを使って安価にサーバレスでサイトの在庫状況を監視するシステムを構築します。Switchの在庫状況を通知するシステムを作ります。Lambda自体がかなり安価なので、VPSを借りるよりも安価になることが多いはずです。Lambda上で実行することができる言語の一つ、Pythonでスクリプトを記述します。スクリプトの中に通知をとばす処理を記述しておきます。今回はSlackに通知します。Lambdaを実行します。構成図は以下のようになります。スクリプトスクレイピングが明示的に禁止されているサイトは実行しないでください。installでインストールします。Lambdaではライブラリを含めたフォルダをzipでまとめてアップロードする必要があるので、-tオプションでカレントディレクトリを指定しています。次に実行したいスクリプトを書きます。WebhooksのAPIを使って在庫が存在していることをSlackのチャンネルへ通知します。Webhooksの仕様は公式ドキュメントを参考にしてください。Lambdaのイベントをハンドルするために必要な引数となります。Lambda上にアップロードします。アップロードが終わったら関数がハンドラを受け取れるように設定を変更します。ハンドラは<ファイル名><メソッド名>で記述します。例で使用したスクリプトであればbuybot.buy_botとなります。ロールはlambda_exec_roleにします。タイムアウトとリソースデフォルトの設定ではリソースが足りずにタイムアウトしてしまうので、設定でメモリを増やしてタイムアウトの時間を長くします。Lambdaはメモリを増やすことでCPUの性能が増加する仕様になっています。Lambdaを動かすためのトリガーを設定します。Eventsを使用します。ここではおなじみのcron式を使うことができます。スクレイピングを行う場合、サイトに迷惑がかからないように十分な間隔を開けましょう。今回のスクリプトは1分間に1回だけ実行するようにしました。次のようなcron式になります。*)まとめとても簡単にサーバレスな監視システムを作ることができました。EC2やVPSなどを使って1からシステムを作る場合はサーバーの構築などを行わないといけないので、それに比べると気軽に動かすことができていい感じですね。見る*1:ちなみに私はSwitchをまだ持っていません。»プロフィールid:drilldripperプログラミングと将棋が好きです。(1)月別アーカイブはてなブログをはじめよう!drilldripperさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。