コードを記述せずにクラウド間でのデータのアクセスと使用を自動化する Azure サービス。
こんにちは、Hiromasa Miyaji 様
ご確認いただきありがとうございます。
Azure Logic Apps 製品チームで調査した結果、今回確認された事象は ForEach の実行構成によるものであることが確認されました。
Concurrency Control が OFF の場合、ForEach は逐次実行ではなく、既定の並列実行で処理されます。Logic Apps の Variable はワークフロー実行全体で共有されるため、複数の反復処理が並列で同じ Variable を更新すると、後続のアクションで別の反復処理によって設定された値が参照される場合があります。今回の事象もこの動作によるものです。
ForEach を確実に逐次実行するには、以下のいずれかを設定してください。
- Concurrency Control を ON にし、Degree of Parallelism を 1 に設定する。
- ワークフロー定義に以下の設定を追加する。
"operationOptions": "Sequential"
詳細については、以下の Microsoft Learn ドキュメントをご参照ください。
また、ご質問の Compose については、Variable とは異なり、ForEach の各反復処理間で共有・更新される状態を保持しません。そのため、今回の Variable の上書きによる事象は Compose 自体には当てはまりません。
ただし、Compose の入力として共有 Variable を参照している場合、その Variable が別の並列処理によって上書きされると、同様の影響を受ける可能性があります。可能であれば、共有 Variable を使用せず、現在の ForEach 項目を直接参照する方法もご検討ください。
上記の内容で問題が解決しましたら、「Accept Answer」 をクリックし、「Was this answer helpful?」で「Yes」 を選択して、質問をクローズしていただけますと幸いです。
ご不明点がございましたら、お知らせください。