EC2

2016-07-20 13 views
0

私はUS-EAST-1のS3バケットにUS-EAST-1の私のEC2のインスタンスからファイルをアップロードしようとしていますが、私は、Java SDKを使用するときにはスカラを使用して:EC2

//create AWS credentials class\ 
    val credentials = new BasicAWSCredentials(accessKey, secretKey) 
    //Create connection to S3 
    val conn = new AmazonS3Client(credentials) 

と試してみて、私の中のファイルを置く:私は次のエラーを取得しています

conn.putObject(bucket, sourceSystems(i) + "/" + fileName, fileToUpload) 

INFO: Unable to execute HTTP request: Connect to s3-us-west-1.amazonaws.com:443 [s3-us-west-1.amazonaws.com/xxxxxxxxx] failed: connect timed out 
org.apache.http.conn.ConnectTimeoutException: Connect to s3-us-west-1.amazonaws.com:443 [s3-us-west-1.amazonaws.com/xxxxxxxx] failed: connect timed out 

なぜそれが米国にロードしようとしてデフォルトですEC2インスタンスがUS-EAST-1にある場合の-WEST-1

答えて

2

領域us-east-1がデフォルト領域です。 us-west-1に接続しようとすると、デフォルトの地域設定が変更されています。あなたのコードに設定されている領域が表示されていないので、設定ファイル経由で~/.awsに設定されているか、環境変数で設定されていると仮定します。

AWS SDK設定の設定hereについて読むことができます。

+0

だけアクセスキーと秘密キーがハードコードされるべきではないと言って補完するのが好き。 〜/ .aws /資格情報からロードするか、EC2インスタンスでコードを実行している場合はIAMロールを使用する – filipebarretto

+0

リージョンにコードを指定する方法はありますか?私はそれを持っているより関連性の高い情報を見つけることができません。 – theMadKing

+0

@theMadKing私は本当にあなたがそれに関する関連情報を見つけることができないのに驚いています。あなたは何を探しましたか?私はこの記事を読むことをお勧めします:https://java.awsblog.com/post/Tx2IHRMVOFHSU​​O1/Working-with-Different-AWS-Rions –

1

aws-java-sdk:1.10.46からaws-java-sdk:1.11.49にアップグレードすると、この現象が発生しました。

Javaコードまたは~/.awsディレクトリに領域を明示的に設定していないことに注意してください。そして、我々はuserhomeディレクトリのないユーザーの下でプロセスを実行しています。

さらに、私は全体として、us-east-1がjava sdkのデフォルト領域であると考えています。私はここで与えられたとして、それは、Infactはus-west-1であることを示唆している:

https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-s3/src/main/java/com/amazonaws/services/s3/AmazonS3Client.java#L4466