2016-07-20 10 views
0

ich Dateien von meiner EC2 Instanz in der US-EAST-1 zu einem S3-Bucket in US-EAST-1 hochzuladen versuchen, aber wenn ich das Java SDK aber mit Scala:EC2 S3 hochladen Wrong Region

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

und versuchen, meine Datei setzen in:

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

ich die folgende Störung erhalte:

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 

Warum es ist die Standardeinstellung versucht, US zu laden -WEST-1, wenn das EC2 Beispiel ist in der US-EAST-1

Antwort

2

Die Region us-east-1 ist der Standardbereich. Wenn versucht wird, eine Verbindung zu us-west-1 herzustellen, haben Sie die Standardregionseinstellungen geändert. Da Sie die Region, die in Ihrem Code eingestellt ist, nicht anzeigen, gehe ich davon aus, dass sie über die Konfigurationsdatei in ~/.aws oder über eine Umgebungsvariable eingestellt wird.

Sie können here über AWS SDK Konfigurationseinstellungen lesen.

+0

Genau wie ergänzen, indem sie sagen, dass der Access Key und geheimer Schlüssel sollte nicht hart codiert werden. Entweder sie von den ~/.aws/Anmeldeinformationen laden soll, oder, wenn Sie Ihren Code in einer EC2-Instanz ausführen, verwenden IAM Rollen – filipebarretto

+0

Gibt es eine Möglichkeit in meinem Code die Region angeben? Ich kann keine relevanteren Informationen finden, die es haben. – theMadKing

+0

@theMadKing Ich bin wirklich überrascht, dass Sie diesbezüglich keine relevanten Informationen finden können. Nach was hast du gesucht? Ich schlage vor, diesen Artikel zu lesen: https://java.awsblog.com/post/Tx2IHRMVOFHSUO1/Working-with-Different-AWS-Regions –

1

Ich habe dieses Verhalten bei der Aktualisierung von aws-java-sdk:1.10.46 zu aws-java-sdk:1.11.49 gesehen.

Beachten Sie, dass wir ausdrücklich keine Region entweder in dem Java-Code oder im ~/.aws Verzeichnis konfigurieren. Und wir führen den Prozess unter einem Benutzer ohne Benutzerverzeichnis aus.

Ferner stimme ich von ganzem Herzen, dass us-east-1 der Standardbereich für den Java-SDK ist. Ich schlage vor, dass es infact us-west-1 ist, wie hier angegeben:

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

Verwandte Themen