2012-02-22 1 views
0

JClouds를 사용하여 S3 API 만 제공하는 OpenStack/swift 스토리지 클라우드 설치 (빠른/랙 공간 API를 지원하지 않음)와 대화하려고합니다. 서버는이 서버 문제가되지 않습니다 그래서 표준 AWS SDK를 또는 파이썬 BOTO가 잘 작동 사용 인증 오류 (403)로 응답S3 API로 비 AWS 클라우드와 대화하려면 JClouds 사용

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); 

하지만 jclouds의 대부분 잘못된 사용 :

나는 시도했다.

+1

내가 사용한 비밀번호가 잘못되었습니다. 올바른 암호로 작동합니다. – Carsten

답변

0

jclouds 실제로 스위프트을 지원하므로 특별한 작업을 수행 할 필요가 없습니다. 나는

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); 
+0

JClouds는 사용하지만 신속하게 설치하려고하지 않습니다. – Carsten

0

자격 증명, 당신은 당신이, 엔드 포인트 ID를 입력해야 다음, 당신을 위해 작동해야 다음 종속성 org.jclouds.api/swift

을 jclouds 1.3.1을 사용하는 것이 좋습니다 및 구성 것입니다. 예를 들어 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") 
+0

답변 해 주셔서 감사합니다. 사용자 오류로 밝혀졌습니다 (내 의견보기 참조). 불행히도 나는 질문을 삭제할 수 없으며 운영자는 너무 바빠 보인다. – Carsten