問題
Azure FunctionsのEventHubTriggerを使ったコードを実行すると下記のようなエラーが出た。
x-ms-versionが古いと怒られている。Azure FunctionsのSDK?が使おうとしているBlob StorageのAPIバージョンがAzuriteがサポートしているものよりも新しいのが原因そう。
Azuriteのバージョンを azurite --version
で確認すると、3.14.1であることが判明 (2023/3/10時点)。
3.14.1はリリースノート見ると2021年7月にリリースされているようなのでだいぶ古いが、その時点のコードを確認すると確かに2020-10-02
がサポートされている最新のバージョンっぽい。 (なぜか3.14.1時点のタグがなかったので3.14.0のリンクだが)
Azuriteを最新にすれば解消されるかもしれないが、自分の場合Visual Studioの管理下にあるので勝手にバージョンを更新しても問題ないのかはわからない。多分大丈夫と思うが…
そもそもBlob Storageはそれほどコストかからないので頑張ってEmulatorを使う必要もないのかもしれない。
下記にいくつか解決方法を(実証できていないものも含むが)挙げておく。
解決方法
-
方法1: AzuriteがAPIバージョンチェックしないようにして走らせる
azuriteを--skipApiVersionCheck
オプションをつけて実行するるとAPIバージョンチェックしないようにできる。
もちろんバージョンチェックをしないので意図しない動きになるリスクもあるため自己責任で。Visual Studioを使っている場合は、Visual Studioを起動する前にコマンドプロンプトなどで上記コマンドを実行することでVisual Studio起動時に勝手にデフォルトのパラメータでAzuriteが起動してしまうのを防げる。
-
方法2: Azuriteのバージョンを上げる (試していないの動くか不明)
- 方法2-1: Visual Studioのバージョンを上げる?
- 方法2-2: Azuriteを手動でアップグレードする