Procházet zdrojové kódy

Merge pull request #29325 from overleaf/dp-git-bridge-aws-sdk

[git-bridge] Update AWS S3 SDK

GitOrigin-RevId: c40f6c0c3eef6e45e27a57462a7a4732d5151c26
Mathias Jakobsen před 7 měsíci
rodič
revize
0fc0e54cf5

+ 4 - 4
services/git-bridge/pom.xml

@@ -29,7 +29,7 @@
         <logback.classic.version>1.5.20</logback.classic.version>
         <mockserver.version>5.15.0</mockserver.version>
         <mockito.version>5.20.0</mockito.version>
-        <aws.java.sdk.version>1.12.793</aws.java.sdk.version>
+        <aws.java.sdk.version>2.36.2</aws.java.sdk.version>
         <jakarta.xml.bind.api.version>${jaxb.runtime.version}</jakarta.xml.bind.api.version>
         <jaxb.runtime.version>2.3.2</jaxb.runtime.version>
         <httpclient.version>4.5.14</httpclient.version>
@@ -210,10 +210,10 @@
             <version>${mockito.version}</version>
             <scope>test</scope>
         </dependency>
-        <!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk -->
+        <!-- https://mvnrepository.com/artifact/software.amazon.awssdk/s3/2.36.2 -->
         <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk-s3</artifactId>
+            <groupId>software.amazon.awssdk</groupId>
+            <artifactId>s3</artifactId>
             <version>${aws.java.sdk.version}</version>
         </dependency>
         <!-- API, java.xml.bind module -->

+ 28 - 28
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/store/S3SwapStore.java

@@ -1,19 +1,20 @@
 package uk.ac.ic.wlgitbridge.bridge.swap.store;
 
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.*;
 import java.io.InputStream;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.core.sync.RequestBody;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.S3ClientBuilder;
+import software.amazon.awssdk.services.s3.model.*;
 
 /*
  * Created by winston on 21/08/2016.
  */
 public class S3SwapStore implements SwapStore {
 
-  private final AmazonS3 s3;
+  private final S3Client s3;
 
   private final String bucketName;
 
@@ -27,24 +28,20 @@ public class S3SwapStore implements SwapStore {
   }
 
   S3SwapStore(String accessKey, String secret, String bucketName, String region, String endpoint) {
-    String regionToUse = null;
+    Region regionToUse = null;
     if (region == null) {
-      regionToUse = "us-east-1";
+      regionToUse = Region.US_EAST_1;
     } else {
-      regionToUse = region;
+      regionToUse = Region.of(region);
     }
-
-    AmazonS3ClientBuilder builder =
-        AmazonS3ClientBuilder.standard()
-            .withCredentials(
-                new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secret)));
+    S3ClientBuilder builder =
+        S3Client.builder()
+            .region(regionToUse)
+            .credentialsProvider(
+                StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secret)));
 
     if (endpoint != null && !endpoint.isEmpty()) {
-      builder
-          .enablePathStyleAccess()
-          .withEndpointConfiguration(new EndpointConfiguration(endpoint, regionToUse));
-    } else {
-      builder.withRegion(regionToUse);
+      builder.forcePathStyle(true).endpointOverride(java.net.URI.create(endpoint));
     }
     s3 = builder.build();
     this.bucketName = bucketName;
@@ -52,22 +49,25 @@ public class S3SwapStore implements SwapStore {
 
   @Override
   public void upload(String projectName, InputStream uploadStream, long contentLength) {
-    ObjectMetadata metadata = new ObjectMetadata();
-    metadata.setContentLength(contentLength);
-    PutObjectRequest put = new PutObjectRequest(bucketName, projectName, uploadStream, metadata);
-    PutObjectResult res = s3.putObject(put);
+    PutObjectRequest put =
+        PutObjectRequest.builder()
+            .bucket(bucketName)
+            .key(projectName)
+            .contentLength(contentLength)
+            .build();
+    s3.putObject(put, RequestBody.fromInputStream(uploadStream, contentLength));
   }
 
   @Override
   public InputStream openDownloadStream(String projectName) {
-    GetObjectRequest get = new GetObjectRequest(bucketName, projectName);
-    S3Object res = s3.getObject(get);
-    return res.getObjectContent();
+    GetObjectRequest get = GetObjectRequest.builder().bucket(bucketName).key(projectName).build();
+    return s3.getObject(get);
   }
 
   @Override
   public void remove(String projectName) {
-    DeleteObjectRequest del = new DeleteObjectRequest(bucketName, projectName);
+    DeleteObjectRequest del =
+        DeleteObjectRequest.builder().bucket(bucketName).key(projectName).build();
     s3.deleteObject(del);
   }