@@ -12,6 +12,7 @@ import akka.util.ByteString
1212import com .advancedtelematic .libtuf .data .TufDataType .{RepoId , TargetFilename }
1313import com .advancedtelematic .tuf .reposerver .target_store .TargetStoreEngine .{TargetRedirect , TargetRetrieveResult , TargetStoreResult }
1414import com .amazonaws .auth .{AWSCredentials , AWSCredentialsProvider }
15+ import com .amazonaws .client .builder .AwsClientBuilder
1516import com .amazonaws .regions .Regions
1617import com .amazonaws .services .s3 .AmazonS3ClientBuilder
1718import com .amazonaws .services .s3 .model .{CannedAccessControlList , PutObjectRequest }
@@ -29,10 +30,19 @@ class S3TargetStoreEngine(credentials: S3Credentials)(implicit val system: Actor
2930
3031 private val log = LoggerFactory .getLogger(this .getClass)
3132
32- private lazy val s3client = AmazonS3ClientBuilder .standard()
33- .withCredentials(credentials)
34- .withRegion(credentials.region)
35- .build()
33+ protected lazy val s3client = {
34+ if (credentials.endpointUrl.length() > 0 ) {
35+ AmazonS3ClientBuilder .standard()
36+ .withCredentials(credentials)
37+ .withEndpointConfiguration(new AwsClientBuilder .EndpointConfiguration (credentials.endpointUrl, credentials.region.getName()))
38+ .build()
39+ } else {
40+ AmazonS3ClientBuilder .standard()
41+ .withCredentials(credentials)
42+ .withRegion(credentials.region)
43+ .build()
44+ }
45+ }
3646
3747 override def store (repoId : RepoId , filename : TargetFilename , fileData : Source [ByteString , Any ]): Future [TargetStoreResult ] = {
3848 val tempFile = File .createTempFile(" s3file" , " .tmp" )
@@ -91,7 +101,7 @@ class S3TargetStoreEngine(credentials: S3Credentials)(implicit val system: Actor
91101 }
92102}
93103
94- class S3Credentials (accessKey : String , secretKey : String , val bucketId : String , val region : Regions )
104+ class S3Credentials (accessKey : String , secretKey : String , val bucketId : String , val region : Regions , val endpointUrl : String )
95105 extends AWSCredentials with AWSCredentialsProvider {
96106 override def getAWSAccessKeyId : String = accessKey
97107
0 commit comments