diff --git a/sources/core/pom.xml b/sources/core/pom.xml
index 747126a..70f89fe 100644
--- a/sources/core/pom.xml
+++ b/sources/core/pom.xml
@@ -22,11 +22,11 @@
tools.dynamia.modules.entityfiles.parent
tools.dynamia.modules
- 7.2.2
+ 7.2.3
Dynamia Modules - EntityFiles - Core
tools.dynamia.modules.entityfiles
- 7.2.2
+ 7.2.3
https://www.dynamia.tools/modules/entityfiles
diff --git a/sources/pom.xml b/sources/pom.xml
index bac7f50..e8f7fee 100644
--- a/sources/pom.xml
+++ b/sources/pom.xml
@@ -22,7 +22,7 @@
tools.dynamia.modules
tools.dynamia.modules.entityfiles.parent
pom
- 7.2.2
+ 7.2.3
Dynamia Modules - EntityFiles
https://dynamia.tools/modules/entityfiles
DynamiaTools extension to attach files to entities
diff --git a/sources/s3/pom.xml b/sources/s3/pom.xml
index fac8b89..fa81ea9 100644
--- a/sources/s3/pom.xml
+++ b/sources/s3/pom.xml
@@ -23,12 +23,12 @@
tools.dynamia.modules
tools.dynamia.modules.entityfiles.parent
- 7.2.2
+ 7.2.3
Dynamia Modules - EntityFiles - S3
tools.dynamia.modules.entityfiles.s3
- 7.2.2
+ 7.2.3
https://www.dynamia.tools/modules/entityfiles
diff --git a/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3EntityFileStorage.java b/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3EntityFileStorage.java
index 1549714..e8bbe66 100644
--- a/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3EntityFileStorage.java
+++ b/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3EntityFileStorage.java
@@ -65,6 +65,7 @@ public class S3EntityFileStorage implements EntityFileStorage {
public static final String AWS_S3_REGION = "AWS_S3_REGION";
public static final String AWS_S3_BUCKET = "AWS_S3_BUCKET";
private static final Logger log = LoggerFactory.getLogger(S3EntityFileStorage.class);
+ public static final int PRESIGNED_URL_TIMEOUT = 30;
private final LoggingService logger = new SLF4JLoggingService(S3EntityFileStorage.class, "S3: ");
private final SimpleCache URL_CACHE = new SimpleCache<>();
@@ -199,7 +200,8 @@ public StoredEntityFile download(EntityFile entityFile) {
protected String generateSignedURL(String bucketName, String fileName) {
- PresignedGetObjectRequest presignedRequest = S3Utils.generatePresignedObjetRequest(bucketName, fileName, Duration.ofMinutes(30));
+ PresignedGetObjectRequest presignedRequest = S3Utils.generatePresignedObjetRequest(bucketName, fileName, Duration.ofMinutes(PRESIGNED_URL_TIMEOUT)
+ , getAccessKey(), getSecretKey(), getRegion());
logger.info("Presigned URL: " + presignedRequest.url().toString());
logger.info("HTTP method: " + presignedRequest.httpRequest().method());
diff --git a/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3Utils.java b/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3Utils.java
index 4f5fc82..c71adb5 100644
--- a/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3Utils.java
+++ b/sources/s3/src/main/java/tools/dynamia/modules/entityfiles/s3/S3Utils.java
@@ -2,6 +2,7 @@
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.core.async.AsyncRequestBody;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3AsyncClient;
@@ -35,6 +36,17 @@ public static AwsCredentials getCredentials(String accessKey, String secretKey)
return AwsBasicCredentials.create(accessKey, secretKey);
}
+ /**
+ * Get credentials provider from access key and secret key
+ *
+ * @param accessKey the access key
+ * @param secretKey the secret key
+ * @return the aws credentials provider
+ */
+ public static AwsCredentialsProvider credentialsProvider(String accessKey, String secretKey) {
+ return () -> getCredentials(accessKey, secretKey);
+ }
+
/**
* Build S3AsyncClient
*
@@ -89,11 +101,18 @@ public static CompletableFuture deleteFile(S3AsyncClient s
* @param bucketName the bucket name
* @param key the key
* @param duration the duration
+ * @param accessKey the access key
+ * @param secretKey the secret key
+ * @param region the region
* @return the presigned URL
*/
- public static PresignedGetObjectRequest generatePresignedObjetRequest(String bucketName, String key, Duration duration) {
+ public static PresignedGetObjectRequest generatePresignedObjetRequest(String bucketName, String key, Duration duration,
+ String accessKey, String secretKey, String region) {
- try (S3Presigner presigner = S3Presigner.create()) {
+ try (S3Presigner presigner = S3Presigner.builder()
+ .credentialsProvider(credentialsProvider(accessKey, secretKey))
+ .region(Region.of(region))
+ .build()) {
GetObjectRequest objectRequest = GetObjectRequest.builder()
.bucket(bucketName)
diff --git a/sources/ui/pom.xml b/sources/ui/pom.xml
index 32ee32b..5cef8c3 100644
--- a/sources/ui/pom.xml
+++ b/sources/ui/pom.xml
@@ -22,11 +22,11 @@
tools.dynamia.modules.entityfiles.parent
tools.dynamia.modules
- 7.2.2
+ 7.2.3
Dynamia Modules - EntityFiles UI
tools.dynamia.modules.entityfiles.ui
- 7.2.2
+ 7.2.3
https://www.dynamia.tools/modules/entityfiles