存储目标需要有服务 SAS,而不是帐户 SAS。这是什么意思?

Storage destination needs to have a Service SAS, not an Account SAS. What Does This Mean?

你好,最近我一直在尝试使用这里提到的这个 azure graph 请求

https://docs.microsoft.com/en-us/graph/api/user-exportpersonaldata?view=graph-rest-1.0&tabs=http

现在,当您按照其中所述执行该请求时,您提供了一个存储位置,即 "This is a shared access signature (SAS) URL to an Azure Storage account, to where data should be exported."

每次我通过 SAS url 提供时,我都会收到此错误,"Storage destination needs to have a Service SAS, not an Account SAS"

谁能帮我理解这是什么意思?它链接的文档不清楚。

Storage destination needs to have a Service SAS, not an Account SAS

此处描述了 Account SASService SAS 之间的区别:https://docs.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature#types-of-shared-access-signatures

您正在为整个帐户(例如 https://account.blob.core.windows.net/?sas-parameters)提供 SAS URL,而您应该为特定的 blob 容器(例如 https://account.blob.core.windows.net/blob-container/?sas-parameters).

有两种可能的解决方案:

  1. 为特定的 blob 容器创建 SAS URL。或者换句话说,按照错误消息告诉您的那样创建服务 SAS。您可以使用 Microsoft Storage Explorer 等工具执行此操作。
  2. 在您的帐户 SAS URL 中插入 blob 容器名称,使其看起来像这样 https://account.blob.core.windows.net/blob-container/?sas-parameters

请注意,如果您使用的是 Account SAS,它至少应该对 Object 具有 Blob 服务的 Write 权限。