以下是我的错误的解释。我在Eucalyptus(开源)中注册了两个用户A,B。我在用户A的帐户中使用Jets3t API创建了一个桶B1,并向用户B授予了读取权限(使用“CanonicalGrantee”接口)。使用A的凭证列出访问控制列表时,我得到A的FULL_CONTROL和B的READ。但是当我尝试使用B的证书访问Bucket B1信息时出现了这个错误
线程“main”中的异常org.jets3t.service.S3ServiceException:无法使用无效的存储桶执行操作listObjects:null 在org.jets3t.service.S3Service.listObjects(S3Service.java:1410) 在test.ObjectPermission.main(ObjectPermission.java:40)
有问题的代码是S3Bucket publicBucket =s3Service.getBucket("B1");
这里B1是Bucket属于User A.在上面的代码中s3service返回一个null值。我知道s3service只检索在B'Credential。
下创建的信息我不知道如何解决此问题并使用Jets3t API访问共享存储区
答案 0 :(得分:1)
您正在使用的方法是在帐户B的存储桶列表中搜索帐户A的存储桶B1。因此,始终没有在帐户B中找到该存储桶并返回null。 所以你必须以另一种方式检查它。您可以通过对帐户B的Bucket B1执行头部请求来检查该服务对象isBucketAccessible(),如果它返回true,则表示存储桶是可访问的,而不是。
我100%确定它会起作用:)