【问题标题】:How to get lease on Azure storage file?如何获得 Azure 存储文件的租约?
【发布时间】:2020-08-21 12:36:59
【问题描述】:

我在 azure 云中有多实例 Web 应用程序。我想确保其中只有一个从 azure 存储文件中读取和处理文件。我认为使用租赁选项我可以做到这一点。

但是我无法找到适合此操作的方法。我找到了这个 REST API option 但我正在寻找一些东西 like this.

此示例显示了 blob 存储。什么是文件存储选项?我正在使用最新的文件存储 nuget。

编辑:

这就是我从存储文件中获取数据并处理数据的方式。

    var storageAccount = CloudStorageAccount.Parse("FileStorageConnectionString");
    var fileClient = storageAccount.CreateCloudFileClient();
    var share = fileClient.GetShareReference("StorageFileShareName");
    var file = this.share.GetRootDirectoryReference().GetFileReference("file.txt");
---processing file and renaming the file after processing---

如何在这个文件上实现租用,以便没有其他云实例可以访问这个文件?处理完文件我也会重命名它。

【问题讨论】:

    标签: azure azure-storage azure-cloud-services azure-storage-files


    【解决方案1】:

    请尝试以下方法:

            string connectionString = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net;";
            var shareClient = new ShareClient(connectionString, "test");
            shareClient.CreateIfNotExists();
            var fileClient = shareClient.GetRootDirectoryClient().GetFileClient("test.txt");
            var bytes = Encoding.UTF8.GetBytes("This is a test");
            fileClient.Create(bytes.Length);
            fileClient.Upload(new MemoryStream(bytes));
            var leaseClient = fileClient.GetShareLeaseClient();
            Console.WriteLine("Acquiring lease...");
            var leaseId = leaseClient.Acquire();
            Console.WriteLine("Lease Id: " + leaseId);
            Console.WriteLine("Breaking lease...");
            leaseClient.Break();
            Console.WriteLine("Lease broken...");
    

    它使用Azure.Storage.Files.Shares Nuget 包。

    【讨论】:

    • 我正在使用 CloudFileClient 实例访问该文件,并且能够获取数据并对其进行处理。为什么我不能以这种方式获得租约?在我原来的问题中添加了参考代码。
    • CloudFileClient 是旧 SDK 的一部分,它针对旧的 REST API 版本,而 File Lease 功能在新的 REST API 版本中公布。这就是你不能使用 CloudFileClient 的原因。
    • 我的应用程序以 .NET4.6.2 为目标,我使用的是 Microsoft.Azure.Storage.File 11.1.3 版本。而不是这个,我应该使用 Storage.Files.Shares 包来读取和租用 Azure 存储文件?
    • 我查看了这个 SDK,很遗憾在其中找不到任何与租赁相关的信息。您可能想在这里提出一个问题:github.com/Azure/azure-storage-net/issues。 SDK 版本 11 和 12 完全不同,因此您必须评估升级 SDK 版本只是为了获得租约对您是否有意义。
    • 其他替代方法可能是简单地在文件上创建一个 SAS URL 并直接使用 REST API。
    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 2021-06-19
    • 2021-06-19
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多