2017-06-16 304 views
0

我正在尝试使用以下java代码创建aws s3存储桶。设置AWS S3区域

AmazonS3 s3client = AmazonS3ClientBuilder.defaultClient(); 
    s3client.setRegion(Region.getRegion(Regions.AP_SOUTH_1)); 

但我收到以下错误:

“异常”:“com.amazonaws.SdkClientException”, “消息”:“无法找到通过区域供应商链的区域必须提供在构建器或设置环境中提供区域的明确区域。“

我想以不正确的方式设置区域吗?请指教。

+0

只需将“ap-south-1”作为字符串传递即可。 –

+0

实际上,在安装AWS CLI之后,我必须在配置文件中将其设置为属性。尽管现在正在拾取区域,但我收到了一个说明400错误请求的错误。 – codeLearner

回答

0

您收到错误的原因是您没有在Eclipse中设置AWS。

如果您使用的是Eclipse作为IDE然后阅读: http://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/welcome.html

一旦配置文件的设置,然后

AmazonS3 S3 =新AmazonS3Client(新ProfileCredentialsProvider());

Region apSouth1 = Region.getRegion(Regions.AP_SOUTH_1);

s3.setRegion(apSouth1);

还要确保导入:

进口com.amazonaws.regions.Region;

import com.amazonaws.regions.Regions;

+0

实际上,我的确使用eclipse设置了AWS。在.aws/config文件和环境变量中都设置了凭据。在调试过程中我可以看到区域和凭据被选中,但仍然出现400错误请求错误。 – codeLearner

+0

你的情况,因为你正在创建S3桶 - 400错误的请求错误意味着InvalidBucketName - 指定的桶无效。 存储桶名称长度必须至少为3且不超过63个字符。 存储桶名称必须是一系列一个或多个标签。相邻标签由一个单独的句点(。)分隔。 存储桶名称可以包含小写字母,数字和连字符。每个标签必须以小写字母或数字开头和结尾。 桶名不得格式化为IP地址(例如,192.168.5.4)。 – Ali

0

如果你不使用任何代理和你已经设置您的凭证,您可以使用下面的代码:

AmazonS3 s3client = AmazonS3ClientBuilder.standard() 
.withRegion(Region.getRegion(Regions.AP_SOUTH_1)); 

但是如果你需要安装一个代理,并手动设置的证书,您可以使用下面的代码:

AWSCredentials cred = new BasicAWSCredentials(<accessKey>,<secretKey>); 
AmazonS3 s3client = AmazonS3ClientBuilder.standard() 
.withCredentials(new AWSStaticCredentialsProvider(cred)) 
.withClientConfiguration(<your configuration>) 
.withRegion(Region.getRegion(Regions.AP_SOUTH_1));