2017/07/16

calibre 環境をクラウド (GCP) に作り直してみた

1年前に Calibre を使って日経新聞をKindleで読む環境構築について投稿したが、稼動後しばらくして、raspberry pi を停止していた。

その後しばらく経ってから再開させようとしたら、エラーが発生して Kindle 用の Mobi ファイルが作成されなくなってしまった。色々調べてみたのだが、その時は初代 raspberry pi で動くライブラリに問題があって、calibre のアップデートで動かなくなった、と思って一旦放置とした。スマホを機種変して、大きめの画面にしたこともあり、紙面アプリで読むほうが便利になったことも一つの理由。

ところが、春先に旅行に行くことになり、どうしても Kindle で新聞が読みたい衝動に駆られ、久しぶりに環境の再構築をすることにした。で、せっかくなので、クラウド上で全てできないか試してみることにした。 Calibre 動かす為だけに、24 時間 raspberry pi 動かすのも阿呆らしいので。


ということで、しばらくは Calibre を GCP (Google Cloud Platform) 環境で動かして、毎日のニュースを kindle に飛ばす方法について連載してみることにする。当然、24 時間動かすのは非常に無駄なので、必要最低限のコストでどこまでできるかも踏まえて、まずは全体の構成について考えてみる。

【やりたいこと】

  • 毎日決まった時間に、calibre でニュースサイトから記事を DL して mobi ファイルを作成する
  • mobi ファイルを作成したら、kindle 用のメールアドレス宛に、mobi ファイルを添付ファイルとしてメール送信する
【実現方法】  
  1. GAE (Google App Engine) を利用して、特定の URL にアクセスがあったら、GCE (Google Cloud Engine) のインスタンスを起動する処理を走らせ、この URL をタスクキューを使って定期実行させる。
  2.  GCE のインスタンスは、起動スクリプトの中で以下を実行させる
    1. calibre を起動し mobi ファイルを作成させる
    2. 作成した mobi ファイルを GCS (Google Cloud Storage) にコピーする
    3. OS をシャットダウン
  3. GCS では、バケットにデータが置かれたりした場合の Notification を呼ぶ設定を行い、GAE の特定の URL をコールさせる
  4. GAE では、GCS にファイルが置かれた際に呼ばれる URL の処理として、新たに GCS 上に配置された mobi ファイルを添付ファイルとして、あらかじめ定められたメールアドレスにメール送信する。
これによって、GCE のインスタンスは calibre の処理を行う時だけ起動させるので、無駄がない。また、プリエンプティブ VM を使うことでだいぶコストを抑えることもできる。GCS にコピーする mobi ファイルも、GCS の標準機能のライフサイクル設定をしておくことで、スクリプトなどでファイルの削除をコントロールする必要もないし、無駄な費用も抑えることができる。

 GAE もアクセス数が日に2つ程度であることを考えると、ほぼ無料枠内で収まるのでコストはかからない。

ということで、まずは calibre 実行環境の VM 作りから。次に続く。

1 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除