Index: pom.xml
===================================================================
--- pom.xml (revision 1709780)
+++ pom.xml (working copy)
@@ -44,7 +44,7 @@
com.amazonaws
aws-java-sdk-s3
- 1.9.22
+ 1.10.27
org.apache.jackrabbit
Index: src/main/java/org/apache/jackrabbit/aws/ext/ds/S3Backend.java
===================================================================
--- src/main/java/org/apache/jackrabbit/aws/ext/ds/S3Backend.java (revision 1709780)
+++ src/main/java/org/apache/jackrabbit/aws/ext/ds/S3Backend.java (working copy)
@@ -52,6 +52,7 @@
import com.amazonaws.AmazonServiceException;
import com.amazonaws.event.ProgressEvent;
import com.amazonaws.event.ProgressListener;
+import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
@@ -65,6 +66,7 @@
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.Upload;
+import com.amazonaws.util.StringUtils;
/**
* A data store backend that stores data on Amazon S3.
@@ -139,12 +141,24 @@
}
String region = prop.getProperty(S3Constants.S3_REGION);
Region s3Region = null;
- if (Utils.DEFAULT_AWS_BUCKET_REGION.equals(region)) {
- s3Region = Region.US_Standard;
- } else if (Region.EU_Ireland.toString().equals(region)) {
- s3Region = Region.EU_Ireland;
+ if (StringUtils.isNullOrEmpty(region)) {
+ com.amazonaws.regions.Region ec2Region = Regions.getCurrentRegion();
+ if (ec2Region != null) {
+ s3Region = Region.fromValue(ec2Region.getName());
+ } else {
+ throw new AmazonClientException(
+ "parameter ["
+ + S3Constants.S3_REGION
+ + "] not configured and cannot be derived from environment");
+ }
} else {
- s3Region = Region.fromValue(region);
+ if (Utils.DEFAULT_AWS_BUCKET_REGION.equals(region)) {
+ s3Region = Region.US_Standard;
+ } else if (Region.EU_Ireland.toString().equals(region)) {
+ s3Region = Region.EU_Ireland;
+ } else {
+ s3Region = Region.fromValue(region);
+ }
}
if (!s3service.doesBucketExist(bucket)) {
Index: src/main/java/org/apache/jackrabbit/aws/ext/Utils.java
===================================================================
--- src/main/java/org/apache/jackrabbit/aws/ext/Utils.java (revision 1709780)
+++ src/main/java/org/apache/jackrabbit/aws/ext/Utils.java (working copy)
@@ -26,14 +26,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.amazonaws.AmazonClientException;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.services.s3.model.Region;
+import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ObjectListing;
+import com.amazonaws.services.s3.model.Region;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import com.amazonaws.util.StringUtils;
@@ -97,7 +99,16 @@
String propEndPoint = prop.getProperty(S3Constants.S3_END_POINT);
if ((propEndPoint != null) & !"".equals(propEndPoint)) {
endpoint = propEndPoint;
- } else {
+ } else {
+ if (StringUtils.isNullOrEmpty(region)) {
+ com.amazonaws.regions.Region s3Region = Regions.getCurrentRegion();
+ if (s3Region != null) {
+ region = s3Region.getName();
+ } else {
+ throw new AmazonClientException("parameter ["
+ + S3Constants.S3_REGION + "] not configured");
+ }
+ }
if (DEFAULT_AWS_BUCKET_REGION.equals(region)) {
endpoint = S3 + DOT + AWSDOTCOM;
} else if (Region.EU_Ireland.toString().equals(region)) {