首页 > 解决方案 > Azure FileShare:指定的资源不存在 - SAS 身份验证

问题描述

我正在尝试使用 Java/Scala 中的 SAS 在 Azure FileShare 下列出文件。

我无权访问存储帐户,但只有 Azure 文件存储中特定共享的 SAS 密钥。如何在 Java 中直接访问 Share?

我可以使用存储资源管理器列出共享中的目录和文件,使用 AZCopy 下载或使用带有 SAS 密钥的共享 URL 的 Rest Call。

几乎所有其他发布类似错误的人都尝试使用存储帐户密钥和 BlobStorage 进行身份验证。他们似乎可以访问共享之上的一层,即存储帐户。但我需要使用仅适用于此共享的 SAS 直接连接到 FileShare。

  val storageConnectionString =
  s"FileEndpoint=$endpoint;" + // https://xyz.file.core.windows.net
    "SharedAccessSignature=" +
    URLEncoder.encode(sas)

  val storageAccount = CloudStorageAccount.parse(storageConnectionString)

  val fileClient = storageAccount.createCloudFileClient()
  val share = fileClient.getShareReference(fshare)  //A fileshare with access
  val rootDir = share.getRootDirectoryReference()
  val files = rootDir.listFilesAndDirectories()

  files.forEach(file => println(file.getUri)) //Error: com.microsoft.azure.storage.StorageException: The specified resource does not exist.

共享中的文件使用相同的 URI(FileShareEndpoint+"/"+fshare+"?"+sas)在 Storage Explorer 的 UI 中可见。

期望获得文件和目录列表,但出现异常:“指定的资源不存在。”。是代码还是无法通过程序连接到共享而无需首先对存储帐户进行身份验证?

标签: javascalaazureazure-storage-filesazure-sas

解决方案


推荐阅读