2017-06-16 11 views
0

次のJavaコードを使用してaws s3バケットを作成しようとしています。AWS S3 Regionを設定する

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

しかし、私は次のエラーを取得しています:

「例外」:「com.amazonaws.SdkClientException」、 「メッセージ」:「地域プロバイダ鎖を介して地域を見つけることができません提供しなければなりません地域を供給するためのビルダーまたはセットアップ環境内の明示的な領域。

地域を正しく設定しようとしていませんか?ご意見をお聞かせください。

+0

は、単に "ap-south-1"を文字列として渡します。 –

+0

実際には、AWS CLIをインストールした後、configファイルのプロパティとしてこのプロパティを設定する必要があります。リージョンが取得されていますが、400 Bad Requestと異なるエラーが発生しています。 – codeLearner

答えて

0

エラーが発生する理由は、EclipseでAWSを設定していないためです。プロファイルは、セットアップが続いたら http://docs.aws.amazon.com/toolkit-for-eclipse/v1/user-guide/welcome.html

AmazonS3 S3 =新しいAmazonS3Client(新ProfileCredentialsProvider());:

あなたのIDEとしてEclipseを使用している場合は、読み

リージョンapSouth1 = Region.getRegion(Regions.AP_SOUTH_1);

s3.setRegion(apSouth1);また

インポートすることを確認してください:

輸入com.amazonaws.regions.Regionを。

import com.amazonaws.regions.Regions;

+0

実際には、私はeclipseでAWSをセットアップしました。証明書は.aws/configファイルと環境変数の両方に設定されています。デバッグ中に表示されるようにリージョンと資格情報が選択されていますが、 。 – codeLearner

+0

s3 bucket - 400を作成しているので、あなたのケースでは不正なリクエストエラーが発生しました。InvalidBucketName - 指定されたバケットは無効です。 バケット名は3文字以上63文字以下でなければなりません。 バケット名は、一連の1つ以上のラベルである必要があります。隣接するラベルは単一のピリオド(。)で区切られます。 バケット名には、小文字、数字、ハイフンを含めることができます。各ラベルは、小文字または数字で始まり、末尾に付ける必要があります。 バケット名は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)); 
関連する問題