その後しばらく経ってから再開させようとしたら、エラーが発生して Kindle 用の Mobi ファイルが作成されなくなってしまった。色々調べてみたのだが、その時は初代 raspberry pi で動くライブラリに問題があって、calibre のアップデートで動かなくなった、と思って一旦放置とした。スマホを機種変して、大きめの画面にしたこともあり、紙面アプリで読むほうが便利になったことも一つの理由。
ところが、春先に旅行に行くことになり、どうしても Kindle で新聞が読みたい衝動に駆られ、久しぶりに環境の再構築をすることにした。で、せっかくなので、クラウド上で全てできないか試してみることにした。 Calibre 動かす為だけに、24 時間 raspberry pi 動かすのも阿呆らしいので。
ということで、しばらくは Calibre を GCP (Google Cloud Platform) 環境で動かして、毎日のニュースを kindle に飛ばす方法について連載してみることにする。当然、24 時間動かすのは非常に無駄なので、必要最低限のコストでどこまでできるかも踏まえて、まずは全体の構成について考えてみる。
【やりたいこと】
- 毎日決まった時間に、calibre でニュースサイトから記事を DL して mobi ファイルを作成する
- mobi ファイルを作成したら、kindle 用のメールアドレス宛に、mobi ファイルを添付ファイルとしてメール送信する
【実現方法】
- GAE (Google App Engine) を利用して、特定の URL にアクセスがあったら、GCE (Google Cloud Engine) のインスタンスを起動する処理を走らせ、この URL をタスクキューを使って定期実行させる。
- GCE のインスタンスは、起動スクリプトの中で以下を実行させる
- calibre を起動し mobi ファイルを作成させる
- 作成した mobi ファイルを GCS (Google Cloud Storage) にコピーする
- OS をシャットダウン
- GCS では、バケットにデータが置かれたりした場合の Notification を呼ぶ設定を行い、GAE の特定の URL をコールさせる
- GAE では、GCS にファイルが置かれた際に呼ばれる URL の処理として、新たに GCS 上に配置された mobi ファイルを添付ファイルとして、あらかじめ定められたメールアドレスにメール送信する。
これによって、GCE のインスタンスは calibre の処理を行う時だけ起動させるので、無駄がない。また、プリエンプティブ VM を使うことでだいぶコストを抑えることもできる。GCS にコピーする mobi ファイルも、GCS の標準機能のライフサイクル設定をしておくことで、スクリプトなどでファイルの削除をコントロールする必要もないし、無駄な費用も抑えることができる。
GAE もアクセス数が日に2つ程度であることを考えると、ほぼ無料枠内で収まるのでコストはかからない。
ということで、まずは calibre 実行環境の VM 作りから。次に続く。
このコメントは投稿者によって削除されました。
返信削除