Azure Functions実行時に出るBlobのエラーの解消方法

2023-03-10

問題

Azure FunctionsのEventHubTriggerを使ったコードを実行すると下記のようなエラーが出た。
x-ms-versionが古いと怒られている。Azure FunctionsのSDK?が使おうとしているBlob StorageのAPIバージョンがAzuriteがサポートしているものよりも新しいのが原因そう。

An exception occurred while stopping the event processor instance with identifier '*****-****-****-****-************' for Event Hub: ********* and Consumer Group: $Default.  Error Message: 'The value for one of the HTTP headers is not in the correct format.
RequestId: ************

Status: 400 (The value for one of the HTTP headers is not in the correct format.)
ErrorCode: InvalidHeaderValue
Additional Information:
HeaderName: x-ms-version
HeaderValue: 2021-06-08

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を使う必要もないのかもしれない。

下記にいくつか解決方法を(実証できていないものも含むが)挙げておく。

解決方法