2017-06-16 305 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));