Azure App Configurationを試す(4)プッシュ更新による動的な構成を使用する...がうまく動かなかった

はじめに

先日より試してみている機能の一つとして、アプリの設定や機能フラグを一元的に管理するためのサービスとしてAzure App Configurationというものがあります。

docs.microsoft.com

上のドキュメントを読んでもあまり嬉しさがわからないのですが、その嬉しさを理解するためにもSpring Bootアプリで試してみることにしました。今回はプッシュ更新による動的な構成を試してみました...が、結果としてうまく動きませんでした。

これまで試した記事は以下の通り。

サンプル

例によってチュートリアルが用意されているのでそれを参考にします。

docs.microsoft.com

サンプルの記述はあっさりしすぎていたので、いくらか確認しながら実装していきます。

ライブラリの追加

Spring Actuatorを使うようです。build.gradleに以下の記述を追加します。

implementation 'org.springframework.boot:spring-boot-starter-actuator'

com.azure.spring:azure-spring-cloud-appconfiguration-config-webと合わせて使うことで、Spring Actuatorにappconfiguration-refreshというエンドポイントができるようです。

チュートリアルを眺めてみると、Azure App Configurationから値が変更されたらそれをEvent Grid経由でWebHookが起動されるという流れ。ドキュメントにはEvent Grid では、HTTPS Webhook エンドポイントのみがサポートされています。と書かれています。

docs.microsoft.com

このため、ローカルで実行することはやめてAzure Web Appsにてデプロイすることにしました。JavaアプリをAzure Web AppsへのデプロイはAzure Gradle Pluginsを使うと楽です。

github.com

アプリケーションの設定

アプリケーションの設定も行います。Spring Actuatorのappconfiguration-refreshのWebエンドポイントを使えるようにします。bootstrap.propertiesにて

management.endpoints.web.exposure.include=appconfiguration-refresh

と記述します。チュートリアルにあるように二重引用符付きだとうまく動きませんでした。

また、spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.namespring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secretのそれぞれの値はWebHooksのパラメータとして使うだけみたいなので、テスト目的だとあまり真面目に考えなくても良さそうです。

あとはAzure Portal上で設定すればできるはずが...

あとはAzure Portal上で設定すればできるはずとたかを括っていたのですが、うまく動かず。

Eventは送信されているようですし...

実際、Application Insightsにてログを確認するとPOST /actuator/appconfiguration-refreshが発行されているのですが、アプリケーションへ変更が反映されず...

"2022/5/15 6:38:09.629","POST /actuator/appconfiguration-refresh",True,200,"15.642","<250ms",request,,,"POST /actuator/appconfiguration-refresh"
"2022/5/15 6:38:15.728","GET /",True,200,"28.683","<250ms",request,,,"GET /"

う〜〜〜ん、もうちょっと見直します。