Regonn&Curry.fm Episode 122収録後記 GCPに画像アップロードしたら自動で文字認識するパイプラインをTerraformで構築
このnoteは、Regonn&Curry.fm というポッドキャストの第122回の収録後記です。
122回ではAxross記事公開、codeコンペかcsvを提出するコンペか、discordのステージチャンネル、4月の目標、今週のKaggleについて話しました。
前回(121回)の放送でSORACOM UG Online#4のLTの告知をしました。そこで話してきた際にLTで時間がなくコードの解説ができていなかったので、ここでしていきます。
内容はIoTとは少しずれてしまいますが、GCPのCloud Storageにファイルがアップロードされたトリガーで、Cloud Functionを動かして、Cloud VisionのOCRを実行してログに流すという処理をTerraformを利用して構築しています。Terraformを利用しているので、コードをそのままデプロイすれば使える状態になっています。
発表スライド
関連コード
コードはGithubで公開していて、大きく分けてメイン処理(Cloud FunctionでCloud Vision APIを叩いたりする処理)とTerraform処理(インフラ構築用)にしてあります。
メイン処理
新しくインストールが必要なのはCloud Visionだけなので、requirements.txt にライブラリを追加しておきます。コードは殆どサンプルコードを持ってきているので、コメントとかもそのままです。Terraform側で
entry_point = "uploaded_image"
を指定しているので、アップロードトリガーが実行されると uploaded_image メソッドが呼ばれるようになります。他のメソッドで情報を取り出したり、Cloud Vision APIを叩いています。
Terraform処理
今回特殊なのはCloud Functionを利用する際に、Cloud Storageに実行ファイルをアップロードしておかないといけないので、画像アップロード用とは別のBucketも準備して、"arcive_file" を利用することで、Terraformのplan実行時にzipファイルを作成して、"google_storage_bucket_object" で zip ファイルをアップロードしています。ここらへんも複数の処理の出力先などを別のところから呼べるのでインフラ含めた構築がTerraformで簡単になっています。
実行結果
これで実行すると、無事にファイルアップロードした際にログに、OCRの結果が流れるようになります。
発展させるなら
今回はCloud VisionのOCRを利用していますが、自分で作った機械学習モデルでの実行などもTerraformの場所をレゴブロックのように切り替えていくだけなので、比較的やりやすいかなと思います。そこらへんもできてきたら、同じようにコードを公開していこうと思います。
この記事が気に入ったらサポートをしてみませんか?