ゲレの工房

ゲーム好きの中の人が、自分が作りたいアプリを作る記録です

FF14雑記:備忘録:AWS LambdaでAPIを叩き、Amazon Rekognitionのモデルを実行させたい

以前から、私は「言語を超える力」というアプリを開発しています。
やりたいこととしては、FF14で使われているエオルゼア文字をAmazon Rekognitionで画像認識させて、英数字に変換させたいということです。

実際、画像タグをつける作業も並行して行っています。

今回の記事ではその活動の一部分、プログラミングによるシステム構築を。
特に、AWS Lambdaについては理解していないことが多いので、これを機に勉強してみたいと思っています。
その備忘録です。

参考記事

こちらの記事を参考に勉強しました。
qiita.com

やりたいこと

AWS LambdaにAPI Gateway経由でPythonコードを実行し、Amazon Rekognitionのモデルを起動・停止する

画像認識を行うAmazon Rekognitionシステムでは、

  • モデルを起動し
  • Amazon S3から画像を取得して推論し、その結果を返し
  • モデルを停止させる

という流れがあります。

つまりやりたいこととしては

  • AWS Lambdaを使ってモデルの起動・停止
  • AWS S3に画像をアップロードする
  • AWS Lambdaを使って画像認識を行う

という3つのプログラミングが必要になります。
今回はそのうち「モデルの起動・停止」の部分の勉強を

Amazon Rekognition の API

参考記事

pythonでのAPI実行についてはこちらの記事を参考にしました。
qiita.com

Amazon RekognitionのAPIAWS Lambdaから叩く

APIAmazon Rekognitionの中にドキュメントが書かれてあります。

これを実行すれば良さそうですね。

さて今回はその実行するためのPython環境としてAWS Lambdaを選択しました。
理由としては、私がAWS Lambdaを触ってみたかったからです!

前々からAWS Lambdaを触ってみたい欲求はあったのですが、実際に使う目的が見当たらなかったのです。
今回ようやく、その目的が見つかったのが嬉しいですね。

実際やってみた

エラーが吐き出されました

Error An error occurred (AccessDeniedException) when calling the StartProjectVersion operation: User: arn:aws:sts:: 以下略

どうやらAWS Identity and Access Management (IAM) ポリシー違反っぽいエラー

このUserにIAMで権限を設定すれば良いのでしょうかね・・・

roleに権限を追加する

エラーログと見合わせてみると、IAMコンソールのroleから見覚えがある文字が、
これにロールを追加すればいいのかな。

とみているとぴったりのがありましたね。

AmazonRekognitionCustomLabelsFullAccess で良さそうです。

もう一度試してみる

エラーが変わりました

{
"errorMessage": "2021-02-27T03:37:13.179Z d4c47f12-e273-42ea-ab7e-d48d9cd2f572 Task timed out after 3.00 seconds"
}

今度はAWS Lambdaのエラーのようですね。
3秒でタイムアウトしてしまったようです。

モデルの起動には時間がかかるようです。
ちなみに10秒でも失敗しました。

考え方を変えてみる必要がある?

どうやらモデルの起動に時間がかかるのであれば、

  • モデルは起動したままにしておいて、
  • 推論だけAWS Lambdaを利用し、
  • 私やみんなが使わなそうな時間だけ停止しておく

というのが良いのかもしれません。

それだけ分かっただけでも収穫なのかな。

とりあえず備忘録ということでノ`・ω・)ノ

追記(2021/03/07):このあととんでもないことに・・・・

詳しくは次回の(自戒の)記事を・・・・
blog.gelehrte.com


広告