Power Automate クラウドフローで Dataverse テーブルからデータを一覧取得しようとした際 「Internal Server Error」(500 エラー)が突然発生して、えっー!? ってなったので、調査した結果と対策を備忘録的にネタにしていきます。
なお、対策案は「当方が試してうまくいった」内容になります。皆さんが同様の状況に陥った際、同じ対策で改善するとは断言できませんが・・・「よくわからないエラーになったら試してみるコト」ぐらいで記憶の片隅に置いといていただけると、いつか(自分を含む)誰かが救われるかもしれない、と思って続けます。
発生した事象、あるいは遭遇したエラー
Power Platform 環境へ Dataverse を作成すると、自動で準備されるマネージドレイヤーのテーブルから、クラウドフローでデータを取得しようとしたんです。アクションを少しずつ追加しながら、動作確認しながら作り進めていった途中で、以下のエラーが発生しました。
InternalServerError. Encountered internal server error. The tracking Id is 'xxxxxx'.
なお、フローの左上に表示されたエラーは「Network Error」。
クラウドフローでネットワークエラー・・・って、もしかしてインシデント発生!?と焦って管理センターの正常性レポート等を確認しましたがオールグリーンでした。
詳細は割愛しますが、アクションが 3~4個の時は正常に動作していたのです。その後、後続の処理を追加した後に実行したら突然エラーとなったので「なんでやねん!」ってなりました汗。
エラーが発生したアクション
Microsoft Dataverse コネクターの「選択された環境から行を一覧にする」です。
環境指定して、行のフィルターに簡単な OData クエリ書いてあるだけなんですけどねぇ。
Copilot さんに質問してみた
検索しても「コレかな?」という内容に出会わなかったので、Copilot さんに聞いてみました。
ふーむ・・・ピンとくる内容が無いですね。途中まで意図した動作をしていたのに、突然エラーになったので「ひと晩寝かせてみるか」と思い、その日はこれ以上の調査をせずに終了しました。
ひと晩寝かせてみた
翌日、再度試してみましたが、同じアクションで 500 エラーになってしまいます。ブラウザーのキャッシュを削除したり、フローをエクスポートしてインポートしなおしてみたり、色々試してみましたが、エラーになる環境では全く改善される気配がありません。テスト実行だけでなく、1回保存して、一覧画面に戻ってから実行しても状況は変わらずエラー。
なんでやねん!
と思いつつ・・・。
「同じアクションで必ずエラーになる」というコトは、そのアクションが怪しい、という仮説がたちますよね。なので、該当アクションで何かやれないか考えてみたのです。
うまく行った対策案
既に[行のフィルター]を仕込んだ状態だったので、取得する行数をこれ以上減らすのは避けたい、と判断。
そこで、取得する列数を減らしてみようと思いました。
該当アクションの[列を選択する]にパラメーターを指定してみます。
さて、テストしてみましょう!
いったぁ!!動いたぁ!!!
おめでとうございます、ありがとうございます。
関連するかもしれない情報
今回、話題にしているアクションで、Internal Server Error(500 エラー)とは異なり BadRequest エラーになるパターンもあります。
BadRequest. Http request failed as there is an error: 'Cannot write more bytes to the buffer than the configured maximum buffer size: 104857600.'.
「単一のトリガーまたはアクション - 入力または出力の最大サイズ」が 104,857,600 バイト(105 MB) になっており、それを超過するやり取りがエラーになる、というコトですね。
このエラーが発生した際も、応答のやり取り総量をチューニングする必要があります。
結び
冒頭にも明記してありますが、同様のエラーが発生した際、同じ対策方法で必ず改善するとは断言できません。ただ、1回試してみても良い操作だと思いますので、頭の片隅にあって、いつか誰かのお役に少しでも立てれば幸いです。
それでは、皆さま。素晴らしい Power Platform Life を!