我正在尝试使用Java / Scala中的SAS在Azure FileShare下列出文件。
我无权访问存储帐户,而只能访问Azure文件存储中特定共享的SAS密钥。如何直接访问Java中的共享?
我能够使用Storage Explorer列出“共享”中的目录和文件,使用AZCopy或使用SAS密钥的共享URL使用AZCopy或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中看到Share中的文件。
预期获得文件和目录的列表,但会出现异常:“指定的资源不存在。”。是代码还是在没有首先验证存储帐户的情况下通过程序无法连接到共享?