Azure Logic Appsでセンチメント分析の運用を回したら色々と問題が出てきたのでまとめたいと思います。
※この記事は2017年1月20日時点の情報です
発生した問題
Azure Logic Appsでセンチメント分析のフローを運用し始めたのですが、毎日21:00頃にTranslatorAPIで403エラーが発生し始めました。
時間帯として利用できないタイミングがあるのか、または障害で止まっているのかと色々憶測しながらエラーの内容を確認したところ「Out of call volume quote」というエラーをTranslatorAPIが返却していました。
どうやらリクエストの制限にひっかかったらしく、ログを収集して確認してみたところリクエスト200回目くらいから上記のエラーが出はじめていました。
1日のリクエスト回数制限があるのだろうなと予想し明示的に記載されているサイトはないか調査しました。
問題解決
結論から言いますとAzure Logic Appsのコネクタについて制限が記載されているサイトやドキュメントを見つけることはできませんでした。
TraslatorAPIの制限を見つけることはできたんですが「無料枠は200万文字まで」の利用制限しか記載がありませんでした。
調査をして解ったこととしてAzure API Managementを利用しているコネクタはAPI Managementによりリクエストの制限や制限をリセットするタイミング等を独自に設定することができるということです。
件のTraslatorAPIはAzure API Managmentを利用しており、何かしらのHTTPリクエストの制限を設定はしているが明示的な情報公開は行っていないようです。もしかしたら行っているのかもしれませんが私は見つけることができませんでした。
教訓としてサービス連携を利用する場合は各サービスの制限はもとより動いてるプラットフォームの制限も把握する必要があるということです。TranslatorAPIのコネクタ自体がプレビューなので致し方ないとは思うのですが制限周りにの情報については明示してほしいものですが・・・。
今回の事象の回避柵としてトリガーをツイートが投稿されたタイミングではなく、タイマーをトリガーにして一定期間毎に実行するようにして、その間で投稿されたツイートをまとめてTranslatorAPIに投げるように修正しようと思います。とりあえず10分ポーリングにしておけば、一日の実行数は144回に抑えられるので問題は発生しなくなると思います。
制限事項に関して明示的に公開するようフィードバックは送っておきました。
【 参考サイト 】
※TranslatorAPIはCognitiveServiceに統合されるため上記のサイト情報は古い情報になる可能性があります。
Cognitive-ServiceとしてのTranslatorAPIのサイト
※今現在はこちらを参考にするほうがいいです。
コメント