2016-08-30 8 views
5

ヌル領域を持つS3バケットがあることを意味するJavaスタックトレースエラーが発生しました。null領域を持つAWS s3バケットを作成することは可能です

これは可能ですか?エラーとnull領域s3バケットを再作成しようとしましたが、成功しませんでした。

com.amazonaws.services.s3.model.AmazonS3Exception: The bucket is in this region: null.Please use this region to retry the request (Service: Amazon S3; Status Code: 301; Error Code: PermanentRedirect; Request ID: EA0959BA1B1D56A7) 
     at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1372) 
     at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:919) 
     at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:697) 
     at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:449) 
     at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:411) 
     at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:360) 
     at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3962) 
     at com.amazonaws.services.s3.AmazonS3Client.getBucketPolicy(AmazonS3Client.java:2544) 
     at com.amazonaws.services.s3.AmazonS3Client.getBucketPolicy(AmazonS3Client.java:2504) 
+3

で>結果は、なぜあなたはそれをしたいですか?リージョンを気にしない場合は、createBucket( "bucketName")またはcreateBucket( "bucketName"、Region.US_Standard)のいずれかを使用します。どうしてあなたはnullを渡したいのですか? – stdunbar

+0

これは私が見ているエラーです。私はそれを修正できるようにエラーを再現したいだけです。 – jcalloway

+0

(1)環境変数AWS_DEFAULT_REGIONに何も設定されていないか、または(2)〜/ .aws/configの領域がnothingに設定されているかどうかを確認してください。 – stdunbar

答えて

8

このエラーを再現できました。 AmazonS3Clientが呼び出し元のバケットと異なる領域に設定されている場合に発生します。

def s3Client = new AmazonS3Client(new BasicAWSCredentials("accessKey", "secretKey")) 
s3Client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.AP_NORTHEAST_1)) 
def policy = s3Client.getBucketPolicy('joshuacalloway-us-east-1-bucket') 
println policy 

-

Result: com.amazonaws.services.s3.model.AmazonS3Exception: The bucket is in this region: null. Please use this region to retry the request (Service: Amazon S3; Status Code: 301; Error Code: PermanentRedirect; Request ID: 5F941FB57305BDEC), S3 Extended Request ID: xajT6YydJU+EfoOFWtD4SFiaxS7zoOUS9OKAmFVq/CECmoNuCbcDu4q7z4L+kztbyrMxb5c/Bcw= 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1543) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1181) 
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:962) 
3

ありませんあなたがすることはできません - バケツは、既存の領域内にに作成する必要があり、この情報を使用すると、あなたのバケットからオブジェクトを取得する方法も

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html

あなたですバケットを作成するには、バケットを作成する名前とAWSリージョンを指定します。

リージョンを指定しない場合は、 Amazon S3は米国東部にバケツを作成します(N.ヴァージニア)地域。

あなたはあなたのバケットは自動的に別の領域に

+0

AWSが作成を許可したとき、以前はバケットだったと思います地域のないバケット – jcalloway

+0

@jcalloway今日はバケットを作りましたが、地域を求めませんでした。さらに、S3コンソールのドロップダウンメニューからリージョンを選択しようとすると、「S3はリージョン選択を必要としません」と表示されます。 – Prashant

+0

@Prashantバケツを作成するときに地域を尋ねると、コンソールに行くと利用可能な地域がドロップダウン表示されます.CLIの場合は、プロファイルに地域が定義されている必要があります。バケットを作成するときにCLIに領域を渡す –

1

を複製することにしたい場合、これは誤解を招くエラーですCross-Region Replicationを有効にすることができます。私もこの問題に直面しましたが、バケット名のスペルミスを持つポリシーであると認識しました。例えばmybucketの代わりに、私はmybucktを言いました。

"Resource": [ 
    "arn:aws:s3:::mybuckt", 
    "arn:aws:s3:::mybuckt/*" 
] 

訂正すると問題は解決しました。

関連する問題