TL;DR
- Cloud Vision APIを使ってみたかった
- S3 に画像をアップロードしたら背後で自動的に Cloud Vision API に投げて、その結果を SNS に流すようにしてみた
背景
とにかく Cloud Vision API を使ってみたいと思いました。しかしこれといってやりたいことが思い浮かばなかったので、Qiitaに画像をアップロードしたら自動的にCloud Vision APIを実行して、その結果を取り出せるようにしてみることにしました。
実装方針
Qiita に画像をアップロードすると実体となる画像ファイルは背後にある S3 バケットに設置されます。 S3 にファイルが追加されるとそれをトリガーにして AWS Lambda を起動できるのでこんな感じにすることにしました:
- S3 に画像が追加される
- Lambda が実行されて、その中で Cloud Vision API を叩く
- API の結果を SNS に流す
3 で SNS に流すことにしたのは、Lambda の中で API の結果をハンドリングすると、新しく機能を追加したいと思った時に毎回既存のものに手を入れなくてはならなくて面倒だからです。その点 SNS だったら、そのトピックを購読する何か(Lambda とか)を新しく追加すればいいだけなので、互いに疎結合になって嬉しそうです。
実装
実装した結果、これは汎用的に使いまわせそうだと思ったので、OSSとして公開しました。使い方などはREADMEを読んでください。
使ってみた
トピックのメッセージを標準出力するだけの Lambda を登録して
↑この qiitan 画像をアップロードしてみた結果
ということで、 qiitan は漫画っぽくてアダルド画像ではないことが分かりました。