Power Appsの使い方

Power AppsとPower Automateの使い方やできることがわかるブログを目指しています。

Dataverse サービス保護のAPI制限について

市民開発者の方へ

今回の内容は主にプロ開発者向けの内容です。市民開発者レベルの利用用途ではまず発生しないと思われますので、ご安心ください。もしそれっぽいことが発生したら、お近くのプロ開発者に相談してみましょう。

 

権利の制限とサービス保護のAPI制限について

よく Power Platform の利用可能な制限について話題に上がるのは、24時間で要求可能な Power Platform 要求の数についてかとおもいます。こちらは、ライセンスごとに付与された権利の制限になります。

 

API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn

 

今回話題に挙げているのは権利の制限とは異なるもので、ライセンスを買えば解決!というような類のものではありません。

 

サービス保護のAPI制限と呼ばれるもので、文字通り一部のユーザーによる異常なリクエストを制御し、全体の利用を妨げないようにするための制限となっています。

 

API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn

 

制限があることによって不便に感じるかもしれませんが、この制限がないと、例えば1人のユーザーによる異常なリクエストによって、テナントの Dataverse の負荷が過剰に上がってしまい、最終的にテナント全体が停止する、なんてことになってしまうかもしれません。

 

この制限があることによって、多くのユーザーが快適にサービスを利用できるようにしているわけです。ありがたや。

 

サービス保護のAPI制限ってどんな制限があるの?

サービス保護のAPI制限には、以下の3つがあります。

 

・5分間の中で要求しすぎると制限される

・5分間の中で時間のかかる処理を要求しすぎると制限される。

・同時実行の要求をしすぎると制限される。

 

どの程度要求すると制限されるか数値を出したいところですが、この辺りは環境により異なるようです。ただ、普通にしていればそうそう制限にかかることはないと思われます。のちに記載するページに参考値が記載されていますが、許容値の変動要素としては

 

・環境に割り当てられたサーバーの数により許容値が変動する

・サーバーの数は購入したライセンス数や、その他の要因で変動する

・試用版環境は1つのサーバーが割り当てられている

・制限の内容は変更される可能性がある

 

などが記載されています。

 

注意点としては、検証で利用することの多いであろう試用版環境はWebサーバーの割り当ては1つ固定であることです。実際の運用時と制限内容が異なる可能性があるので、留意しておきましょう。

 

参考値として、サーバー1台当たりの制限を記載します。

制限項目

サーバ1台当たりの許容値

要求数の制限

6000 / 5

実行時間の制限

合計20分かかる処理 / 5分

同時実行数の制限

52の処理まで

※環境のサーバーの数やその他の要因により、制限は変動します。最新の情報は下記のページを参照してください。

サービス保護 API の制限 (Microsoft Dataverse) - Power Apps | Microsoft Learn

 

制限されるとどうなる?

しばらくの間、新しい要求ができなくなります。制限解除までの時間は429エラーメッセージに含まれていますが、どの程度制限を超過したかにより異なるようです。一般的な対策ではありますが、その時間分待機を挟んで再度要求を投げるように実装しましょう。

 

また、制限を超過したときに影響を受けるのは、超過したユーザーのみです。他のユーザーには影響しないので、やらかしてしまった場合でもテナント全体への影響は少なそうです。

 

API要求数の制限への対策

バッチを使って一度に複数の処理を要求する

バッチを使うと、最大で1000の操作を1度に要求できます。これにより、API要求数を減らすことが可能です。

※ちなみに、残念ながら権利の制限はバッチで回避できません。

 

毎月から毎日、毎時、リアルタイム実行へ

ため込んで処理を行うと、1度に多くの処理をしなくてはなりません。なるべくリアルタイムで処理できるのであればリアルタイムで処理するようにしましょう。

 

UIを持つアプリで発生する場合には、アプリの作りを改善する

リストの表示数を減らしたり、データをキャッシュするなど要求数をなるべく減らすように作り替えることで、回避できるはずです。

 

実行時間の制限への対策

重いバッチ処理を同時実行しない

そもそも重い処理ということがわかっている場合には、制限を考慮して構築しましょう。

 

プラグインやリアルタイムワークフローを軽量化したり、データ移行のため一時的に無効化する

11つの処理を軽くすることで、処理時間の低減を図りましょう。

 

同時実行数の制限への対策

52を超えて同時実行しないようにする

軽い処理であっても、同時実行数を増やしすぎないようにしましょう。10程度から始めて、ほかの要素を加味しながら制限を超えない値を探っていく方法が推奨されています。

 

まとめ

以上、サービス保護のためのAPI制限についてでした。あまりこの制限に引っかかることはないかもしれませんが、存在だけでも知っておくと何かあった時に気が付きやすいかと思います。

プロ開発者の方は、処理の重いバッチやデータ処理が無造作に実行されないよう気を付けましょう。

 

今回は実際にエラーを出すとこまで書けなかったので、そのうち実験してみたものを記事にしようと思います。

 

参考リンク

サービス保護 API の制限 (Microsoft Dataverse) - Power Apps | Microsoft Learn

API 制限の概要 (Microsoft Dataverse) - Power Apps | Microsoft Learn

Web APIを使用したバッチ処理の実行 (Microsoft Dataverse) - Power Apps | Microsoft Learn

 

 

この記事は Microsoft Power Automateのカレンダー | Advent Calendar 2022 - Qiita に参加しています。

Power Apps や Power Automate に関する仕事のご依頼は下記ページからお問い合わせください。
ZEE CitizenDevSupport