我正在开发一个Java应用程序,该应用程序使用Account SAS(共享访问签名)URI执行以下方法:
CLoudBlockBlob blob = container.getBlockBlobReference("tmp/test.json");
blob.exists();
blob.openInputStream();
blob.delete();
container.exists();
container.listBlobs().iterator().next();
container.getDirectoryReference("tmp/").listBlobs().iterator().next()
但是,我找不到一种方法来生成单个帐户SAS来支持上面列出的所有方法。
成功执行:
CLoudBlockBlob blob = container.getBlockBlobReference("tmp/test.json");
blob.exists();
blob.openInputStream();
blob.delete();
失败,错误代码:AuthorizationResourceTypeMismatch
container.exists();
container.listBlobs().iterator().next();
container.getDirectoryReference("tmp/").listBlobs().iterator().next()
成功执行:
container.exists();
container.listBlobs().iterator().next();
container.getDirectoryReference("tmp/").listBlobs().iterator().next()
失败,错误代码:AuthorizationResourceTypeMismatch
CLoudBlockBlob blob = container.getBlockBlobReference("tmp/test.json");
blob.exists();
blob.openInputStream();
blob.delete();
有什么方法可以生成可用于以下所有方法的单个Account SAS?
CLoudBlockBlob blob = container.getBlockBlobReference("tmp/test.json");
blob.exists();
blob.openInputStream();
blob.delete();
container.exists();
container.listBlobs().iterator().next();
container.getDirectoryReference("tmp/").listBlobs().iterator().next()
答案 0 :(得分:0)
答案 1 :(得分:0)
对于blob容器中的listing blobs
,您需要将resource type
设置为Container
。您需要的权限为List
。
对于checking if blob exists
,您需要将resource type
设置为Object
。您需要的权限为Read
。
对于deleting blob
,您需要将权限设置为Delete
。资源类型仍为Object
。
由于您仅使用Blob存储,因此service type
就是Blob
。
总结:
借助此功能,您应该能够实现自己的目标。
答案 2 :(得分:0)
设置两种资源类型可以解决此问题:
sasAccountPolicy.setResourceTypes(EnumSet.of(SharedAccessAccountResourceType.OBJECT, SharedAccessAccountResourceType.CONTAINER));
(我正在开发的应用程序还必须生成SAS URI。)
谢谢。