我正在使用jclouds并尝试抽象掉S3访问。但是,当尝试获取对象时,出现以下异常:
org.jclouds.aws.AWSResponseException: request GET https://test-itpx.s3.amazonaws.com/marcel-mini.jpeg HTTP/1.1 failed with code 400, error: AWSError{requestId='0FB8701BF3CE81EB', requestToken='XXX', code='AuthorizationHeaderMalformed', message='The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'', context='{Region=eu-west-1, HostId=XXX=}'}
从外观上看,S3需要明确的区域定义,answers such as this one建议明确定义它。
不幸的是,blob上下文构建器无法提供指定区域的方法。我定义上下文的方式是:
val context = ContextBuilder.newBuilder("aws-s3")
.credentials("access_key", "access_secret")
.buildView(BlobStoreContext::class.java)
对象get是一个简单的getBlob
:
context.storageContext.getBlob(source.bucket, source.key)
是否可以使用jclouds明确定义s3区域/位置?
我正在使用jclouds-allblobstore版本2.1.2。