1

如果 blob 已在 7 天前创建(无法修改),我正在尝试删除它,因此我需要知道文件何时创建。当我看到它不仅可以为空blobItem.Properties.LastModified而且可以blobItem.Properties.CreatedOn 为空时,我开始使用谷歌搜索。我读到即使 CreatedOn 在我上传 blob 时也没有真正设置。(我正在使用DataLakeFileClient.UploadAsync它)

仍然 Azure 存储资源管理器在 Blop 属性中显示 DateModified 但它无法访问:

var blobServiceClient = new BlobServiceClient(StorageConnectionString);
            var blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
            var blobItems = blobContainerClient.GetBlobsAsync();
            await foreach (var blobItem in blobItems)
            {
                if (blobItem.Properties.CreatedOn.HasValue)
                {
                   
                }
                else
                {  // always end up here
        }

所以我尝试在存储资源管理器中设置元数据,但我也无法读取它们:

        _logger.LogInformation(string.Join(';',blobItem.Metadata.Keys));

奇怪的是,一旦它们被保存,它们也会在存储资源管理器中消失。

任何想法如何解决这些问题?

4

1 回答 1

0

我们无法为 Azure Data Lake Storage gen2 重现此问题。您最好使用最新版本的存储资源管理器,否则这只是一个临时问题。

始终建议使用生命周期管理在指定时间段后删除 blob。

而且fileClient.ScheduleDeletionAsync(new DataLakeFileScheduleDeletionOptions(TimeSpan.FromMinutes(1), DataLakeFileExpirationOrigin.Now));,它的定价和生命周期管理一样,只需要通过写操作支付成本,删除操作是免费的(这段代码实际上是在后端使用Set Blob ExpiryExpiresOn ,它会设置文件的属性)。这是ADLS Gen2 定价的屏幕截图:

在此处输入图像描述

通过使用此代码,您可以控制删除时间,这比lifecycle management. 但是你应该自己管理你的代码/环境。

于 2021-02-08T09:16:50.350 回答