3

私は、Azure BLOB を介してファイルへのアクセスをクライアントに配布する必要があるサービスの構築に携わっています。クライアントは、ファイルへの書き込みロックを要求できる必要があります。つまり、指定された時間の間、その 1 つのクライアントだけが BLOB に書き込むことができます。

私の質問は、そのようなロック メカニズムを実装する方法に関するものです。現時点での私の解決策は、各 BLOB への書き込みアクセスを持つ共有アクセスが一度に 1 つだけアクティブになるようにサービスを使用して、クライアントに共有アクセス署名を介してアクセスを許可することです。

このアプローチの問題は、アクセスを取り消したい場合です。共有アクセスの有効期限が切れる前にクライアントの書き込み操作が完了した場合、署名を取り消して、他の人に書き込みアクセスを許可できるようにしたいと考えています。コンテナー レベルのポリシーを使用することで、そのポリシーを使用するすべての署名へのアクセスのみを取り消すことができますが、私の目的は、単一の個々の BLOB の署名へのアクセスを取り消すことです。

私の質問は次のとおりです。単一の BLOB に対する特定の共有アクセス署名のアクセスを取り消す方法はありますか? そうでない場合、Azure で説明した種類の機能を実装する他の方法はありますか?

ありがとうございました。

4

1 に答える 1

4

ドキュメントから

Shared Access Signature によって付与されるアクセス許可は、署名の作成に使用されたアカウント キーと、関連付けられている保存されたアクセス ポリシー (存在する場合) に関連付けられます。保存されているアクセス ポリシーが指定されていない場合、Shared Access Signature を取り消す唯一の方法は、アカウント キーを変更することです。

また:

さらに、Shared Access Signature URL は、必要に応じてリソースへのアクセスを変更または取り消す機能を含む、署名のセットに対する追加レベルの制御を提供する保存されたアクセス ポリシーを参照できます。リソース レベルのアクセス ポリシーの詳細については、「保存されたアクセス ポリシーの使用」を参照してください。

そのため、取り消しを制御したい場合は、事前定義された保存済みアクセス ポリシーを使用してください。または、短命のSASを作成します

ちなみに、ロックを取得することをBlob Leaseと呼びます。BLOB のリースとロックに関するこのブログ投稿も確認してください。

于 2012-12-04T08:47:27.800 に答える