仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

Azure FunctionsのTable Storageへのoutバインディングで上書きしようとしたけどできなかった件(Python)

Azure FunctionsからのTables StorageへのoutバインディングPythonでやるには

あまりサンプルが転がってないのですが、以下あたりを参考にすると実現できます。
github.com

Table Storageへのバインディングはデフォルトでは上書きできない

Table StorageはPartitionKeyとRowKeyでユニークになる必要がありますが、Table Storageへのバインディングはデフォルトでは上書きできません。実際、キーが重複するようなメッセージがでて書き込みできません。

一方で以下によるとETagというのを指定すると、上書きできそうです!
stackoverflow.com

でいろいろ試行錯誤して結局できませんでした。他、いろいろ調べると、C#以外の?ETagの使用にはバグがあるみたいです。
github.com

結局はoutバインディングは使わず・・・・。

検討しましたが、上書きするにはbindingだけでは解決できないようです。で、結局TableServiceクラスを使わざるを得ないという結論に至りました。
docs.microsoft.com
ETagが正常に動作するようになるまでの暫定として、削除のみをこのクラスで行い、書き込みはバインディングでさせるという方法もあるのですが、このクラスを使うのだったら insert_or_replace_entity メソッドで一発で上書きできるので、まずはoutバインディングを使わない方向でよさげですね。