🍏

AWS LambdaからAzureのOCRをIAM認証で実行しようとしたけど諦めた話

2024/07/17に公開

はじめに

先日、Google Cloud→AWSのアクセスをIAM認証で通す記事を書きました。
https://zenn.dev/ncdc/articles/a59403b5799d06

今度は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」が最初に出てきます。
https://azure.microsoft.com/ja-jp/products/ai-services/ai-vision/#overview
これは罠です。

この最新のOCRは、画像用のRead OCR(v4.0)とドキュメント用のDocument Intelligenceに分かれているのですが、ドキュメント用は日本語に対応していません。
https://learn.microsoft.com/ja-jp/azure/ai-services/computer-vision/overview-ocr#ocr-read-editions

今回はドキュメントを読みたかったので、一世代前の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択の説明になっています。

https://learn.microsoft.com/ja-jp/azure/ai-services/computer-vision/quickstarts-sdk/client-library?tabs=windows%2Cvisual-studio&pivots=programming-language-python

そんな訳はないだろうと思って、コードを書いていろいろ試しましたが、残念ながらセキュリティキー以外で呼び出す方法を見つけることはできませんでした。

また、こちらのドキュメントを御覧ください。
https://learn.microsoft.com/ja-jp/azure/ai-services/authentication#authenticate-with-an-access-token

以下の3個のサービスのみが、アクセストークンで呼び出せると記載があります。

  • Text Translation API
  • 音声サービス: Speech to text API
  • 音声サービス: Text to speech API

つまり、これらの3サービスだけはIAMで認証を通せるけど他は無理ということだと思います。残念です。

最後に

AzureのAI系のサービスは性能が高いものが多いので、もうちょっと使いやすくてセキュアな作りになることを望みます。
AWS→AzureをIAMで通すチャレンジは、IAM認証に対応しているサービスを使いたい機会があれば、改めて挑戦しようと思います。

NCDCエンジニアブログ

Discussion