使用 blob 的 SAS URI 查找 azure 存储的类型

Find the type of azure storage using SAS URI of blob

我想知道如何判断 type of azure storage 是否基于 blob 的 SAS URI?或者更具体地说,如何知道它是 PageBlob 还是 BlockBlob。

只需向 SAS URI 发出 HEAD 请求即可获得 REST API that returns a type of blob,如果文件存在,响应中会有一个字段 header x-ms-blob-type 指示 blob 的类型.但是,如果文件不存在,它会返回 returns 404。现在,当我们收到 404 时,我们可以使用 BlockBlob 上传一个虚拟文件,如果失败,我们就知道它是一个 PageBlob。但我想知道有没有更好的方法?更直接的方法。

SAS URI 示例:

var sasUriStr = "https://storageaccountname.blob.core.windows.net/containername/file?sp=r&st=2021-08-10T00:34:00Z&se=2021-08-15T08:34:00Z&spr=https&sv=2020-08-04&sr=c&sig=ABCDEFGH/YJKLMNOP=";

有一种方法可以找到该信息,但它需要您引入自己的逻辑,并且需要不同类型的 SAS 令牌。

您需要做的是使用该令牌创建一个 Account SAS (currently you're using Service SAS) and then invoke Get Account Information REST API。接下来,您需要提取 x-ms-sku-namex-ms-account-kind 响应 headers。基于这些值,您将必须为支持的 blob 类型提出一个逻辑。例如,

  • 如果x-ms-account-kind的值为BlobStorage,则只支持Block BlobsAppend Blobs
  • 如果x-ms-account-kind的值不是BlobStorageBlockBlobStoragex-ms-sku-name的值是PremiumLRS,则只支持Page Blobs.

前段时间我写了一篇博客 post,其中我创建了一个由帐户类型和 SKU 支持的功能矩阵。您可以在此处阅读该博客 post:https://www.ais.com/how-to-choose-the-right-kind-of-azure-storage-account/

来自这个博客 post: