0

JClouds を使用して、S3 API のみを公開する OpenStack / Swift ストレージ クラウド インストールと通信しようとしています (Swift / Rackspace API はサポートしていません)。

私は試した:

Properties overrides = new Properties();
overrides.setProperty(Constants.PROPERTY_ENDPOINT, CLOUD_SERVIE_ENDPOINT);

// get a context with nova that offers the portable ComputeService api
BlobStoreContext context = new BlobStoreContextFactory().createContext("aws-s3", ident,
    password, ImmutableSet.<Module> of(), overrides);

サーバーは認証エラー 403 で応答します。標準の AWS sdk または python boto を使用すると正常に動作するため、サーバーの問題ではありませんが、jclouds の使用が間違っている可能性があります。

4

2 に答える 2

0

jcloudsは実際にはswiftをサポートしているため、特別なことをする必要はありません。jclouds 1.3.1を使用して、依存関係を構成することをお勧めしますorg.jclouds.api/swift

次に、エンドポイント、ID、クレデンシャルを入力するだけです

Properties overrides = new Properties();
overrides.setProperty("swift.endpoint", "http://1.1.1.1:8080/auth");

BlobStoreContext context = new BlobStoreContextFactory().createContext("swift", "XXXXXX:YYYYY", "password", ImmutableSet.<Module> of(), overrides);
于 2012-02-23T09:21:55.597 に答える
0

以下はあなたのために働くはずです。たとえば、vBlob で動作することが知られています。

import static org.jclouds.s3.reference.S3Constants.PROPERTY_S3_VIRTUAL_HOST_BUCKETS;
...

     Properties overrides = new Properties();
     overrides.setProperty(PROPERTY_S3_VIRTUAL_HOST_BUCKETS, "false");

     BlobStore blobstore = ContextBuilder.newBuilder(new S3ApiMetadata()) // or "s3"
                                         .endpoint("http://host:port")
                                         .credentials(accessKey, secretKey)
                                         .overrides(overrides)
                                         .buildView(BlobStoreContext.class).getBlobStore();

クローンがルート URL で s3 リクエストを受け入れない場合は、それに応じて別のパラメーターを設定する必要があります。

import static org.jclouds.s3.reference.S3Constants.PROPERTY_S3_SERVICE_PATH;
...

     overrides.setProperty(PROPERTY_S3_SERVICE_PATH, "/services/Walrus");
...
                                         .endpoint("http://host:port/services/Walrus")
于 2012-11-17T19:07:35.320 に答える