Storage and messaging
Latest stable Based on AWS release 0.4.0
Spring-facing operations wrap AWS async clients with suspend APIs and framework lifecycle. They do not remove the service’s delivery and consistency rules.
S3 paths
Section titled “S3 paths”Use S3Operations for common object work and presigned URLs. Use S3TransferOperations for large or multipart transfers; it activates only when Transfer Manager is present. Treat copy-then-delete moves and presigned URL expiry as explicit application decisions.
DynamoDB repositories
Section titled “DynamoDB repositories”AbstractCoroutinesDynamoDbRepository provides typed enhanced-client access. Resolve table names through DynamoDbTableNameResolver so environment naming stays outside entity code. Batch and query operations still need pagination, unprocessed-item, index, and capacity handling.
SQS listeners
Section titled “SQS listeners”@SqsListener( queue = "${orders.queue-url}", maxMessages = 10, waitTimeSeconds = 20, visibilityTimeoutSeconds = 60,)suspend fun receive(order: OrderMessage) { orderService.process(order)}Successful completion acknowledges according to the configured policy. On failure, visibility and redelivery rules decide the next attempt. Set processing timeout below visibility or enable an extension/heartbeat strategy.
SNS and SES
Section titled “SNS and SES”SNS publish helpers and HTTP parsing are separate concerns. Verify SNS signatures before processing callbacks. SES senders expose coroutine and JavaMail-style adapters; do not retry non-idempotent sends blindly.
Test what can fail
Section titled “Test what can fail”Test serialization, queue lookup, redelivery, duplicate delivery, DLQ behavior, S3 pagination, multipart cancellation, and DynamoDB partial batch success. A successful send-only test is insufficient.