Azure RMSで死んだ!!
Azure RMSを利用したプロダクトを作っていてお客様に導入したところ上手くいかない。
原因を探ぐるべく悪戦苦闘。
うまくいくパターンと失敗のパターンを比べてみたが、サーバやユーザによって動作が変わり、仮説がたたない。
しょうがないから RmsAnalyzer やpromon で詳細ログもとるが、こちらもRMSがキャッシュがノイズになってよくわからない。
んでもって、クリーン環境でテストするために、Azureで次からつ次へとVMを作って評価。
ここまできて現象の発生を再現可能になった。でもよくわからない。
再現可能な状態でRmsAnalyzerをかけ、ログをDIFFをとり、失敗側はサーバ側から500が返ってきていることが分かった。
さらにFiddlerで調べるもサーバー側の詳細なエラーがわからず原因不明。
こんどは失敗の入力パラメータをいろいろ変えて実行。上手くいくパターンが出てきた!!
Azureのサービスアカウントによって上手くいくパターンと失敗するパターンがあることを発見。ここまで丸2日の戦い。やっと原因が分かった。
結局結論としては、認証情報にMSOnlineで作成したサービスプリンシパルを使わないといけないところで、Azure ADでアプリとして登録したクライアントIDとキーを指定していたのが原因でした。
なんともケアレスミスなことで丸2日をつぶしたショックと反省が必要な結果になりました。
キャッシュの影響があると認証情報が間違っていてもバイパスされて動くことがあるんですよね。これで気付かないまま進んでしまった。
でも見つかったので良かったです。