From c520ecd70d71efca1b82850338d4d702569b9f25 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 22 Jan 2021 09:53:12 +0000 Subject: [PATCH] Allow configuration of AWS region --- services/git-bridge/conf/example_config.json | 3 ++- .../bridge/swap/store/S3SwapStore.java | 19 ++++++++++++++++--- .../bridge/swap/store/SwapStoreConfig.java | 17 +++++++++++++---- .../bridge/swap/store/S3SwapStoreTest.java | 5 +++-- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/services/git-bridge/conf/example_config.json b/services/git-bridge/conf/example_config.json index 7965ce9570..38b14b9787 100644 --- a/services/git-bridge/conf/example_config.json +++ b/services/git-bridge/conf/example_config.json @@ -19,7 +19,8 @@ "type": "s3", "awsAccessKey": "asdf", "awsSecret": "asdf", - "s3BucketName": "com.overleaf.testbucket" + "s3BucketName": "com.overleaf.testbucket", + "awsRegion": "us-east-1" }, "swapJob": { "minProjects": 50, diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java index 44d823aa8c..b439fb21b4 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java @@ -21,16 +21,29 @@ public class S3SwapStore implements SwapStore { this( cfg.getAwsAccessKey(), cfg.getAwsSecret(), - cfg.getS3BucketName() + cfg.getS3BucketName(), + cfg.getAwsRegion() ); } S3SwapStore( String accessKey, String secret, - String bucketName + String bucketName, + String region ) { - s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secret))).build(); + String regionToUse = null; + if (region == null) { + regionToUse = "us-east-1"; + } else { + regionToUse = region; + } + s3 = AmazonS3ClientBuilder + .standard() + .withRegion(regionToUse) + .withCredentials( + new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secret)) + ).build(); this.bucketName = bucketName; } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/SwapStoreConfig.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/SwapStoreConfig.java index 61219d02ee..7559b240ec 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/SwapStoreConfig.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/SwapStoreConfig.java @@ -9,6 +9,7 @@ public class SwapStoreConfig { "noop", null, null, + null, null ); @@ -16,19 +17,22 @@ public class SwapStoreConfig { private String awsAccessKey; private String awsSecret; private String s3BucketName; + private String awsRegion; public SwapStoreConfig() {} public SwapStoreConfig( String awsAccessKey, String awsSecret, - String s3BucketName + String s3BucketName, + String awsRegion ) { this( "s3", awsAccessKey, awsSecret, - s3BucketName + s3BucketName, + awsRegion ); } @@ -36,12 +40,14 @@ public class SwapStoreConfig { String type, String awsAccessKey, String awsSecret, - String s3BucketName + String s3BucketName, + String awsRegion ) { this.type = type; this.awsAccessKey = awsAccessKey; this.awsSecret = awsSecret; this.s3BucketName = s3BucketName; + this.awsRegion = awsRegion; } public String getType() { @@ -60,12 +66,15 @@ public class SwapStoreConfig { return s3BucketName; } + public String getAwsRegion() { return awsRegion; } + public SwapStoreConfig sanitisedCopy() { return new SwapStoreConfig( type, awsAccessKey == null ? null : "", awsSecret == null ? null : "", - s3BucketName + s3BucketName, + awsRegion ); } diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStoreTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStoreTest.java index f8a7ec59e1..e417025767 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStoreTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStoreTest.java @@ -10,6 +10,7 @@ public class S3SwapStoreTest { private static final String accessKey = null; private static final String secret = null; private static final String bucketName = "com.overleaf.testbucket"; + private static final String region = "us-east-1"; private S3SwapStore s3; @@ -19,7 +20,7 @@ public class S3SwapStoreTest { s3 = null; return; } - s3 = new S3SwapStore(accessKey, secret, bucketName); + s3 = new S3SwapStore(accessKey, secret, bucketName, region); } // @Ignore @@ -38,4 +39,4 @@ public class S3SwapStoreTest { // assertArrayEquals(contents, IOUtils.toByteArray(down)); // } -} \ No newline at end of file +}