はてぶ棚卸しをAWS Lambdaで動かす

はてぶを結構使っていて、過去にはてなブックマーク棚卸しというサービスを使ってた。
全自動ブックマーク棚卸しが想像以上に有意義な件 - てっく煮ブログ

自分がはてぶしたやつが半年後とか1年後にRSSでもっかい配信されてくるだけど、あーこれもっかい読んでおこうと思う記事って意外と多くて、棚卸しから配信される記事を掘り起こしてみたいな使い方をしていました。

ただ、Yahoo!Pipeが終了してはてぶ棚卸しが死んでしまったので、存在自体を忘れていたんですが、最近思いだしたのでとりあえず復活させたお話です。

まぁほぼクラスメソッドさんのやつ丸パクリ参考にして作りました
Yahoo!Pipeが終了して全自動はてブ棚卸しが使えなくなってたのでAPI Gateway + Lambdaで自作してみた | Developers.IO

とりあえずハマったところだけメモしておく。

Lambdaを動かす

もともとクラスメソッドさんのブログに書いてたやり方だと、年数単位になってたので、それを月に変更するためにpythonのコードを書き換えました。
(個人的には半年前も欲しかったので)

Lambdaで動かす場合に外部ライブラリを使う場合は、直接コードを書くのではなくて、zipに圧縮してファイルをアップするとOK。

$ pip install requests -t .

で、requestsを入れたあとにそれをzipにしてアップするだけなんだけど、ディレクトリを圧縮するんじゃなくて、ディレクトリの中身を圧縮しないとダメなので、要注意。

ApiGateWayの設定

Responseがデフォルトだとjsonになってるので、XMLに変更。
ただXMLにしただけだと文字列が入ってると""で囲まれてて、RSSが認識できる形になってない

AWS LambdaでHTML→XML→JSON変換をやってみた - Qiita

レスポンスのContent-Typeをapplication/xmlにして、$input.path('$')というテンプレートに流すと生データがレスポンスされるようになる

ってことで、これの設定をやったら正常にXMLになった。

これで一応うごいた。

https://xxxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/bookmark?month=6&user=okbm みたいなURLを叩くと自分が半年前にはてぶしたやつがRSSで配信されてくるので、それをRSSリーダーに設定したらいい感じに。
month=6month=12 にすると1年前にはてぶした内容が来るし、以前使ってたはてぶ棚卸しと同じ挙動になって満足。

はてなブックマークは「RSSリーダー」の開発に取り組んでいきます - はてなブックマーク開発ブログ って記事が2年前にあるので、いつかはてなRSSリーダー作ってくれる時に棚卸しの機能もデフォルトであるといいなぁ…