AWS LambdaからAzureのOCRをIAM認証で実行しようとしたけど諦めた話
はじめに
先日、Google Cloud→AWSのアクセスをIAM認証で通す記事を書きました。
今度はAWS→AzureをIAM認証で通そうとしました。が、諦めました。
今回はAzureのOCRを使いたかったのですが、AWSからとか以前の問題で、私にはAzureのOCRをIAM認証で呼び出すことができませんでした。
やりたかったこと
S3に置かれたファイルをOCRする処理をLambdaで書きたかったのですが、AWSのOCRサービスであるAmazon Textractは日本語に対応していません。
過去の経験からAzureのOCRは日本語の精度が高いことを知っていましたので、AzureのOCRをLambdaから呼び出すことにしました。
ですが、異なるクラウド間でのやり取りはセキュリティの不安があります。
いわゆるAPIキーを使うと簡単に呼び出すことはできますが、キーの漏洩等の危険を考えるとセキュリティ的に懸念があります。ですので、IAMで認証を通したいと思いました。
使用するAzureのOCRサービスを探す
認証の前に、まずは適切なOCRサービスを探します。
Azureのサービスは、突然名称が変わったり、バージョンアップで使い方が変わったり、ドキュメントの記載が統一されてなかったりと、とても分かりにくいです。ですので、やりたいことを実現できるサービスを頑張って探す必要があります。
現時点でAzureでOCRを探すと「Azure AI Vision」が最初に出てきます。
これは罠です。この最新のOCRは、画像用のRead OCR(v4.0)とドキュメント用のDocument Intelligenceに分かれているのですが、ドキュメント用は日本語に対応していません。
今回はドキュメントを読みたかったので、一世代前のRead API(v3.2)を使います。ちなみに上記のドキュメントに非推奨と書いてあるOCR API(v3.2)とRead APIは別物ですので安心してください。
なお、ドキュメントには「Azure AI Vision v3.2 GA Read」と書いてありますが、Azureコンソール上のサービス名は「ComputerVision」です。注意しましょう。
本当に意味不明すぎるので、誰か体系を整理して欲しいです。
Read API(v3.2)はIAM認証で呼べなかった
それでは、Read APIを呼び出しかたを調べます。
まず、こちらのドキュメントを読んでいただければ分かりますが、認証はセキュリティキー1択の説明になっています。
そんな訳はないだろうと思って、コードを書いていろいろ試しましたが、残念ながらセキュリティキー以外で呼び出す方法を見つけることはできませんでした。
また、こちらのドキュメントを御覧ください。
以下の3個のサービスのみが、アクセストークンで呼び出せると記載があります。
- Text Translation API
- 音声サービス: Speech to text API
- 音声サービス: Text to speech API
つまり、これらの3サービスだけはIAMで認証を通せるけど他は無理ということだと思います。残念です。
最後に
AzureのAI系のサービスは性能が高いものが多いので、もうちょっと使いやすくてセキュアな作りになることを望みます。
AWS→AzureをIAMで通すチャレンジは、IAM認証に対応しているサービスを使いたい機会があれば、改めて挑戦しようと思います。
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion