尝试访问ibm云存储时遇到错误
具有指定配置代码的容器存储位置不可用(服务:Amazon>状态代码:400。
请参阅我正在使用aws s3客户端sdk在ibm云存储中创建存储区的代码段。
String accessKey = (ACCESS_KEY);
String secretKey = (SECRET_KEY);
AWSCredentials credentials = new BasicAWSCredentials(accessKey,
secretKey);
AmazonS3Client s3service = new AmazonS3Client(credentials);
s3service.setEndpoint(END_POINT);
s3service.createBucket("samplebucket");
以上代码仅适用于我们南端端点(s3.us-south.cloud-object-storage.appdomain.cloud)
根据ibm官方文档[0],存在用于不同地区的其他端点,但是使用上述代码都无法正常工作。
答案 0 :(得分:0)
我以如何在指定的区域/位置使用Java SDK为例
String location = "us";
AmazonS3 cosClient = createClient(apiKey, serviceInstanceId, endpointUrl, location);
createClient
静态方法如下所示
public static AmazonS3 createClient(String apiKey, String serviceInstanceId, String endpointUrl, String location)
{
AWSCredentials credentials = new BasicIBMOAuthCredentials(apiKey, serviceInstanceId);
ClientConfiguration clientConfig = new ClientConfiguration()
.withRequestTimeout(5000)
.withTcpKeepAlive(true);
return AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withEndpointConfiguration(new EndpointConfiguration(endpointUrl, location))
.withPathStyleAccessEnabled(true)
.withClientConfiguration(clientConfig)
.build();
}
根据documentation here,AmazonS3ClientBuilder
可以选择使用withRegion
来传递区域。
检查完整的COS Java SDK documentation here
已更新:
如果您在COS documentation中看到Java示例,则有一个存储类。
storageClass是有效的预配置代码,与 端点值。然后将其用作S3 API LocationConstraint 变量。
要以编程方式创建具有其他存储类的存储桶,必须指定与使用的端点对应的LocationConstraint。
中找到LocationConstraint的有效配置代码。进一步阅读-API文档: