大体ひと段落したのでまとめてみよう。
これまで、利用してきたブログサービスには紆余曲折があった。レンタルサーバを借りてMovableTypeを使ってみたり、WordPressにしたり、VPSでWordPressにしたり、結局管理するのが面倒ではてなブログに落ち着いてみたり。
そういったサービスを渡り歩くと、ブログに貼った画像の移行をし損ねたり、どこかで取りこぼしていたりする。ブログサービスは自分のサービスに囲い込みたいのだろうから、画像アップロードサービスもセットなのはわかる。そのほうが便利にカスタマイズが可能なのも理解している。
がしかーし。こちらとしては身軽でいたい。そういうわけで、元々画像はFlickrに保存してそちらを参照するようにしていた。
だがしかし、以前のエントリでも書いたようにFlickr運営に不安を感じたので決別することにした。そして利用することにしたのは、クラウドサービスの覇者であるAmazonのS3である。ただし、S3というサービスはただ単にファイルを置く場所なだけなので、画像に特化したあれこれという機能はない。
そこはまぁ、自分のスマホで画像縮小し、S3へのファイルアップローダアプリでアップロードすることで解決だ。
で、ブログを書く上で一番の問題は画像のURLなのである。もちろん、自分でアップロードしたファイル名を確認してそれをつなぎ合わせればURLはわかる。
でもメンドクサイ!!!!!
メンドクサイと感じるところは技術でどうにかしたいねというところです。
というわけで、Amazon S3 + AWS Lambda + Amazon SESを使って、アップロードした画像のURLをメールで送ってくれるような仕組みを作りました。
PCから大量に画像をアップロードすることも考えて、スマホでアップロードする専用ディレクトリを用意して、公開パスとアップロードパスを分けてみる。
ざっくりやったことは下記の通り。
- AWS Lambdaに新しく関数を作る
- Lambda実行用のロールを作る。必要な権限はS3とSESの利用権限。
- S3の特定ディレクトリにオブジェクトが作成されたらLambdaが実行されるように設定しておく
- Lambda関数にコードを書く
- SESでは、メール送信元アドレスの認証が必要。なので認証する。SESは3リージョンしか今のところサービスがないのでとりあえずバーニジアあたりにしとく。
- ファイルをアップロードして、CloudWatch Logsのログをみてデバッグ
- 成功しているのにメールが来ないぞ…?と思ったら、迷惑メールフォルダに入っていたので、迷惑メールから除外する
よしよし。Pythonよくわからなかったけど、サンプルコードを見ればなんとかなるもんだ。
画像の縮小をスマホ側でやっているのは、S3の利用料金を少しでも節約するためだョ。割とその辺は苦にならない。縮小済み画像はスマホの画像フォルダとは別のフォルダに保存されるので、アップロード時に探しやすいというメリットもある。
これでモッキュモッキュとブログを書いていきたい所存。