Class KnoluxS3Template
java.lang.Object
com.knolux.s3.KnoluxS3Template
S3 非同步操作模板,封裝 Upload、Download、Delete。
提供三層 API 供不同場景使用:
靜態模式(Static)
使用 application.yml 設定的預設連線,適合固定部署環境:
s3Template.upload("my-bucket", "path/to/file.jpg", body);
s3Template.download("my-bucket", "path/to/file.jpg", AsyncResponseTransformer.toBytes());
動態模式(Dynamic)
從請求 Payload 組裝 KnoluxS3OperationSpec,適合 REST API 或 Message Queue:
KnoluxS3OperationSpec spec = KnoluxS3OperationSpec.builder()
.endpoint(message.getS3Endpoint()) // null 時 fallback 至 Properties
.accessKey(message.getSecretId())
.secretKey(message.getSecretKey())
.bucket(message.getBucket())
.key(message.getObjectKey())
.build()
.mergeDefaults(s3Properties);
s3Template.download(spec, AsyncResponseTransformer.toBytes());
進階模式(Advanced)
明確指定 KnoluxS3ConnectionDetails,適合需要精細控制連線的場景:
s3Template.upload("bucket", "key", body, customConnectionDetails);
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> delete(KnoluxS3OperationSpec spec) CompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> CompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> delete(String bucket, String key, KnoluxS3ConnectionDetails conn) <T> CompletableFuture<T> download(KnoluxS3OperationSpec spec, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer) <T> CompletableFuture<T> download(String bucket, String key, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer) <T> CompletableFuture<T> download(String bucket, String key, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer, KnoluxS3ConnectionDetails conn) CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> upload(KnoluxS3OperationSpec spec, software.amazon.awssdk.core.async.AsyncRequestBody body) CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> upload(String bucket, String key, software.amazon.awssdk.core.async.AsyncRequestBody body, KnoluxS3ConnectionDetails conn)
-
Constructor Details
-
KnoluxS3Template
public KnoluxS3Template()
-
-
Method Details
-
upload
public CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> upload(String bucket, String key, software.amazon.awssdk.core.async.AsyncRequestBody body) -
download
public <T> CompletableFuture<T> download(String bucket, String key, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer) -
delete
public CompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> delete(String bucket, String key) -
upload
public CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> upload(KnoluxS3OperationSpec spec, software.amazon.awssdk.core.async.AsyncRequestBody body) -
download
public <T> CompletableFuture<T> download(KnoluxS3OperationSpec spec, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer) -
delete
public CompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> delete(KnoluxS3OperationSpec spec) -
upload
public CompletableFuture<software.amazon.awssdk.services.s3.model.PutObjectResponse> upload(String bucket, String key, software.amazon.awssdk.core.async.AsyncRequestBody body, KnoluxS3ConnectionDetails conn) -
download
public <T> CompletableFuture<T> download(String bucket, String key, software.amazon.awssdk.core.async.AsyncResponseTransformer<software.amazon.awssdk.services.s3.model.GetObjectResponse, T> transformer, KnoluxS3ConnectionDetails conn) -
delete
public CompletableFuture<software.amazon.awssdk.services.s3.model.DeleteObjectResponse> delete(String bucket, String key, KnoluxS3ConnectionDetails conn)
-