diff --git a/pom.xml b/pom.xml
index ad1d9998b..e2df92814 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
com.amazonaws
aws-java-sdk-s3
- 1.10.6
+ 1.11.115
com.google.protobuf
diff --git a/src/main/java/org/whispersystems/textsecuregcm/util/UrlSigner.java b/src/main/java/org/whispersystems/textsecuregcm/util/UrlSigner.java
index c7f1e55df..f59790571 100644
--- a/src/main/java/org/whispersystems/textsecuregcm/util/UrlSigner.java
+++ b/src/main/java/org/whispersystems/textsecuregcm/util/UrlSigner.java
@@ -21,6 +21,7 @@ import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
+import com.amazonaws.services.s3.S3ClientOptions;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import org.whispersystems.textsecuregcm.configuration.S3Configuration;
@@ -42,10 +43,12 @@ public class UrlSigner {
public URL getPreSignedUrl(long attachmentId, HttpMethod method) {
AmazonS3 client = new AmazonS3Client(credentials);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket, String.valueOf(attachmentId), method);
-
+
request.setExpiration(new Date(System.currentTimeMillis() + DURATION));
request.setContentType("application/octet-stream");
+ client.setS3ClientOptions(S3ClientOptions.builder().setAccelerateModeEnabled(true).build());
+
return client.generatePresignedUrl(request);
}
diff --git a/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java b/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java
new file mode 100644
index 000000000..510029f3d
--- /dev/null
+++ b/src/test/java/org/whispersystems/textsecuregcm/tests/util/UrlSignerTest.java
@@ -0,0 +1,30 @@
+package org.whispersystems.textsecuregcm.tests.util;
+
+import com.amazonaws.HttpMethod;
+import org.junit.Test;
+import org.whispersystems.textsecuregcm.configuration.S3Configuration;
+import org.whispersystems.textsecuregcm.util.UrlSigner;
+
+import java.net.URL;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class UrlSignerTest {
+
+ @Test
+ public void testTransferAcceleration() {
+ S3Configuration configuration = mock(S3Configuration.class);
+ when(configuration.getAccessKey()).thenReturn("foo");
+ when(configuration.getAccessSecret()).thenReturn("bar");
+ when(configuration.getAttachmentsBucket()).thenReturn("attachments-test");
+
+ UrlSigner signer = new UrlSigner(configuration);
+ URL url = signer.getPreSignedUrl(1234, HttpMethod.GET);
+
+ System.out.println("The URL: " + url);
+ assertThat(url).hasHost("attachments-test.s3-accelerate.amazonaws.com");
+ }
+
+}