0

这是我的错误的解释。我在 Eucalyptus(开源)中注册了两个用户的 A、B。我在用户 A 的帐户中使用 Jets3t API 创建了一个存储桶 B1,并授予用户 B 读取权限(使用“CanonicalGrantee”接口)。在使用 A 的凭据列出访问控制列表时,我得到了 A 的 FULL_CONTROL 和 B 的 READ。但是当我尝试使用 B 的凭据访问存储桶 B1 信息时,我得到了这个错误

线程“主”org.jets3t.service.S3ServiceException 中的异常:无法使用无效存储桶执行操作 listObjects:在 test.ObjectPermission.main( ObjectPermission.java:40)

有问题的代码是 S3Bucket publicBucket =s3Service.getBucket("B1");

这里 B1 是 Bucket 属于 User A。在上面的代码中 s3service 返回一个 null Values 。我知道 s3service 只检索在 B' Credential 下创建的信息所属的信息。

我不知道如何解决这个问题并使用 Jets3t API 访问共享存储桶

4

1 回答 1

1

您使用的方法是在账户 B 的存储桶列表中搜索账户 A 的存储桶 B1。所以总是在账户 B 中找不到该存储桶并返回 null。所以你必须以另一种方式检查它。您可以通过为该调用 isBucketAccessible() 对帐户 B 服务对象的 Bucket B1 进行头部请求来检查它,如果它返回 true,则表示存储桶可访问,否则不可访问。

我 100% 确定它会起作用:)

于 2012-10-16T05:18:42.437 回答