0

これが私のエラーの説明です。Eucalyptus(オープンソース)に2人のユーザーA、Bを登録しました。ユーザーAのアカウントでJets3tAPIを使用してバケットB1を作成し、ユーザーBに読み取り権限を付与しました(「CanonicalGrantee」インターフェイスを使用)。Aのクレデンシャルを使用してアクセス制御リストを一覧表示しているときに、AのFULL_CONTROLとBのREADを取得しました。しかし、Bのクレデンシャルを使用してバケットB1情報にアクセスしようとすると、このエラーが発生しました。

スレッド「main」の例外org.jets3t.service.S3ServiceException:アクションlistObjectsは、無効なバケットでは実行できません:test.ObjectPermission.main(のorg.jets3t.service.S3Service.listObjects(S3Service.java:1410)でnull ObjectPermission.java:40)

問題のあるコードは S3Bucket publicBucket =s3Service.getBucket("B1");

ここで、B1はバケットがユーザーAに属しています。上記のコードでは、s3serviceはnull値を返します。s3serviceは、B'クレデンシャルの下で作成された情報のみを取得することを知っています。

これを解決し、Jets3tAPIを使用して共有バケットにアクセスする方法がわかりません

4

1 に答える 1

1

使用している方法は、アカウント B のバケットのリストでアカウント A のバケット B1 を検索することです。そのため、常にアカウント B でそのバケットが見つからず、null が返されます。そのため、別の方法で確認する必要があります。その呼び出し isBucketAccessible() のアカウント B サービス オブジェクトのバケット B1 のヘッド リクエストを実行することで確認できます。true が返された場合、それはバケットにアクセス可能であることを意味します。

私はそれがうまくいくと100%確信しています:)

于 2012-10-16T05:18:42.437 に答える