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)) {