どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

AWS LambdaでarXivの論文をSlackに通知する

最近なにかと論文を読んでいるですが、そもそも論文を探している時間がもったいないですし、無料かつタイムリーに読みたい論文が知りたいと思い、いい感じの論文をSlackに通知するようにしたのでそのメモです。

参考にしたのはこちらです。

kusanohitoshi.blogspot.com

イメージはこんな感じです。

f:id:nogawanogawa:20181114170542j:plain

Slackの設定

まず、Slackに適当にチャンネルを作ります。 私の場合はarXivというチャンネルを作りました。

こちらにアクセスして設定します。

Sign in | Slack

webhook が必要になるので、適宜インストールしてください。

作成したチャンネルを入力して「Incoming Webhook インテグレーションの追加」に進みます。

遷移したページのWebhook URLを控えておきます。

Lambdaの設定

Pythonの作成

参考サイトと若干違いますが、そのへんは多めに見ていただければと思います。

わたしは内部のapi_urlにWebhook URLをべた書きしちゃいました。どうせLambda使うなら環境変数にして外に出しても良かったですね。 検索ワード等々はarxivapiをご参照ください。私の場合はGAN関連の論文を検索しています。

arXiv.org help - arXiv API User's Manual

AWS の設定

作ってからわかったんですが、python3のrequestsがそのままではlambdaでは使えないようなので、zipでアップロードして使用します。

適当なロールでAWS Lambdaを作ってもらい、「関数コード」>「コードエントリタイプ」>「.zipファイルをアップロード」を選択してzipにまとめたファイルをアップロードします。

f:id:nogawanogawa:20181114173552p:plain

上のほうにある「テスト」で正常に終了すればOKで、私の場合は時間切れになったので、タイムアウト値を30secに調整したらうまくいきました。

CloudWatchの設定

CloudWatchの「ルール」をからトリガーを作成します。

cron式で「0 0 * * ? *」に設定して、日本時刻で毎朝9:00に前日分の論文の検索を実行するようにしました。

f:id:nogawanogawa:20181114173607p:plain

結果

こんな感じでSlackに通知されました。

f:id:nogawanogawa:20181114172057p:plain

これでちょっとは楽になりそうです。