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バインディングを使わない方向でよさげですね。