2017-04-18 9 views
0

ARM REST APIを使用して、リソース(NSG)を読み込んで変更してから書き戻したいと思います。何かが来て、私の読み書き操作の間にリソースを変更した場合、私は最後のステップ(書き戻し)が失敗するようにしたい。それは可能ですか? GETを実行するとETAGプロパティがあることがわかります。おそらく、リソースが変更された場合に書き込みを失敗させるための方法がありますか?Azure ARM API - 楽観的同時実行

+1

あなたのシナリオは何ですか?私。あなたの読み書きの間に起こった変化があなたのものよりも優先されることをどのように知っていますか?リソースをロックできますか? –

+0

@ bmoore-msft私のシナリオでは、NSGの変更を自動化しています(例:webhookのrunbook)。 2つの変更が同時に発生した場合は、1つを失敗させてからもう1つを指数バックオフで再試行する方法があることを期待していました。 – gregjhogan

+0

しかし、その場合でも最高のレースだよね?私がそれに取り組んでいる間にリソースを「ロック」することができれば(実際には動作しませんが、アイデアは同じです)、誰かがあなたの書き込みの直後に来て、彼らが望む変更を行うことができますとにかく作る... –

答えて

0

私が知っているように、AzureテーブルストレージはETagITableEntityであり、更新時には楽観的同時実行に使用されます。 Azure REST APIの場合Network Security Groupsetag

リソースが更新されるたびに変更される一意の読み取り専用文字列です。

私はNSGに同時更新操作をシミュレートするAzure Portalresources.azure.comを活用しようとしている、と私は更新操作には同時実行制御が存在しないことが判明し、構成は後で要求によってオーバーライドされるだろう。

私の理解しているように、楽観的同時実行性を処理するためのビルドイン機能はありません。 NSGについては、頻繁に変更することはないと思いました。 NSGを更新するためのカスタムREST APIを作成し、最新のNSG情報を入手してetagと前のetagを比較すると更新する前にNSGが変更されているかどうか。また、フィードバックhereを追加することもできます。

+0

ありがとうございました情報!私はrunbookでNSGの変更を自動化しており、変更をシリアル化する組み込みの方法を探しています。 Runbooksにはこれを実現するための組み込みの方法がないので、私はe-tagプロパティに気づいてからARM REST APIに何かがあることを期待していました。私のNSGを変更して以来、電子タグが異なっていることはわかっているので、あなたの手作業による電子タグ比較の提案は本当に助けにならないので、常に異なるでしょう。私は自分の状況に対処するために何かを作ることができますが、私はしなくていいと思っていました! – gregjhogan