📗 https://docs.awspring.io/spring-cloud-aws/docs/3.2.0-M1/reference/html/index.html
Added a module spring-cloud-aws-testcontainers
that simplifies testing Spring Cloud AWS against LocalStack:
@ServiceConnection
support. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/1075
LocalstackAwsClientFactory
to simplify creating AWS clients pointing to LocalStack by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/1106
SQS and SNS integration for Spring Modulith's Externalized Events has been migrated to Spring Cloud AWS:
SqsMessageListenerContainer
and SqsMessageListenerContainerFactory
by @sefabal in https://github.com/awspring/spring-cloud-aws/pull/1102
@NestedConfigurationProperty
to display profile name and path when configuring application properties by @kcsurapaneni in https://github.com/awspring/spring-cloud-aws/pull/1109
SecretsManagerClient
even if config import is not used. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/1114
ChannelInterceptor
for SNS integration by @sondemar in https://github.com/awspring/spring-cloud-aws/pull/1105
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.1.1...v3.2.0-M1
Published by maciejwalkowiak 7 months ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.1.1/reference/html/index.html
QueueAttributesResolver
throws when creating Fifo queue (#995) by @tomazfernandes in https://github.com/awspring/spring-cloud-aws/pull/1002
@SnsNotificationMessage
by @msosa in https://github.com/awspring/spring-cloud-aws/pull/898
SqsTemplate
. (#659) by @levys17 in https://github.com/awspring/spring-cloud-aws/pull/1066
BackOffPolicy
when SQS Polling thread throws an exception. by @tomazfernandes in https://github.com/awspring/spring-cloud-aws/pull/1008
SqsMessageListenerContainer
and SqsMessageListenerContainerFactory
(#1102) by @sefabalconfigurationSetName
configuration property by @thomas-burko in https://github.com/awspring/spring-cloud-aws/pull/1007
fromArn
configuration property @thomas-burko in https://github.com/awspring/spring-cloud-aws/pull/1026
enable
field to false. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/1009
enable
field to false. @MatejNedic in https://github.com/awspring/spring-cloud-aws/pull/1039
AnonymousCredentialsProvider
is used now with by default when STS integration is enabled @MatejNedic in https://github.com/awspring/spring-cloud-aws/pull/1089
StsProperties#asyncCredentialsUpdate
by @MatejNedic in https://github.com/awspring/spring-cloud-aws/pull/1011
Big thanks to all contributors! 🙂
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.1.0...v3.1.1
Published by maciejwalkowiak 11 months ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.1.0/reference/html/index.html
Spring Cloud AWS 3.1.0 brings compatibility with Spring Boot 3.2.x and contains all changes introduced in version 3.0.4.
Published by maciejwalkowiak 11 months ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.4/reference/html/index.html
Big thanks to all contributors! 🙂
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.3...v3.0.4
Published by maciejwalkowiak 12 months ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.3/reference/html/index.html
EndpointRegistrar
by @maksym-telepchuk-ocado in https://github.com/awspring/spring-cloud-aws/pull/893
SqsAutoConfiguration
to use an available ObjectMapper
by @postalservice14 in https://github.com/awspring/spring-cloud-aws/pull/906
@SqsListener
annotation by @jvcalassio in https://github.com/awspring/spring-cloud-aws/pull/870
S3Template
by @straurob in https://github.com/awspring/spring-cloud-aws/pull/915
S3Presigner
region resolution by @anappi-vc in https://github.com/awspring/spring-cloud-aws/pull/937
timestamp
attribute in SNS message. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/932
AwsClientCustomizer
to handle asyncHttpClientBuilder
properly by @mokamoto12 in https://github.com/awspring/spring-cloud-aws/pull/875
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.2...v3.0.3
Published by MatejNedic about 1 year ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.2/reference/html/index.html
corePoolSize
so that maximum number of messages (maxConcurrentMessages
* number of queues) are processed simultaneously. by @mokamoto12 in https://github.com/awspring/spring-cloud-aws/pull/833
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.1...v3.0.2
Published by maciejwalkowiak over 1 year ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.1/reference/html/index.html
utilities()
and waiter()
methods in CrossRegionS3Client
that delegate to default S3 client. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/798
getURL()
method on S3Resource
respects now spring.cloud.aws.s3.path-style-access-enabled
property. For example, for bucket 's3resourcetestand key
new-file.txt`:
spring.cloud.aws.s3.path-style-access-enabled
set to false
, getURL()
returns: https://s3resourcetest.s3.eu-west-1.amazonaws.com/new-file.txt
spring.cloud.aws.s3.path-style-access-enabled
set to true
, getURL()
returns: https://s3.eu-west-1.amazonaws.com/s3resourcetest/new-file.txt
Fixed a bug where for sending messages to FIFO queues the framework would generate a random UUID for missing messageDeduplicationId even if content-based deduplication was enabled on AWS.
Now the framework will only generate a UUID for missing messageDeduplicationId if content-based deduplication is disabled.
Projects that depend on FIFO content-based deduplication should upgrade to 3.0.1 since the bug can lead to duplicated messages being sent.
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0...v3.0.1
Published by maciejwalkowiak over 1 year ago
Spring Cloud AWS 3.0 is a rewrite of the project using AWS SDK v2 for Java. Since this has required a major refactoring, we took it as an opportunity to revisit all the assumptions and integrations modules. As a result, we've produced a library that is lightweight, flexible, causes less headache and provides simple to use abstractions.
Spring Cloud AWS 3.0 is compatible with Spring Boot 3.0+.
To understand the full scope of changes we recommend going through the change list for each milestone and release candidate version:
Since a lot of things have changed, we strongly recommend going through the (completely rewritten) reference documentation:
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0/reference/html/index.html
StsWebIdentityTokenFileCredentialsProvider
by @eduanb in https://github.com/awspring/spring-cloud-aws/pull/691
getFilename
on S3Resource
by @vedgunjan in https://github.com/awspring/spring-cloud-aws/pull/750
sourceArn
for SES integration by @schjan79 in https://github.com/awspring/spring-cloud-aws/pull/762
We are aware that this release breaks existing code but this was the only sensible way we could evolve the framework and meet the demand in constrained time we have. We are very open for your feedback and appreciate any shoutout on social media and Github ⭐️.
This release would not happen without our wonderful community. Big thanks for your bug reports, ideas and pull requests!
Big thanks to all contributors! 🙂
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v2.4.0...v3.0.0
Published by maciejwalkowiak over 1 year ago
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-RC1/reference/html/index.html
createRelative
method to S3Resource
. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/652
SemaphoreBackPressureHandler
logging (#700) by @tomazfernandes in https://github.com/awspring/spring-cloud-aws/pull/701
SqsSendOptions
ids API to String (#694) by @tomazfernandes in https://github.com/awspring/spring-cloud-aws/pull/698
MessageAttributeValue
types (#708) by @tomazfernandes in https://github.com/awspring/spring-cloud-aws/pull/709
DynamoDbTemplate
by @MatejNedic in https://github.com/awspring/spring-cloud-aws/pull/680
spring-cloud-aws-test
to BOM. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/731
Big thanks to all contributors! 🙂
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-RC1...v3.0.0-RC2
Published by maciejwalkowiak over 1 year ago
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v2.4.3...v2.4.4
Published by maciejwalkowiak over 1 year ago
Spring Cloud AWS 3.0 RC1 brings all the features that are planned for the 3.0 release.
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-RC1/reference/html/index.html
The most notable features added in RC1 are:
SqsTemplate
SqsTemplate
is an higher level abstraction on the top of SqsAsyncClient
for sending and receiving messages imperatively:
SendResult<String> result = template.send(to -> to.queue("myQueue")
.payload("myPayload")
.header("myHeaderName", "myHeaderValue")
.headers(Map.of("myOtherHeaderName", "myOtherHeaderValue"))
.delaySeconds(10)
);
Go to reference documentation for more details.
S3Template
integrates now with S3Presigner
for creating signed URLs
URL signedGetUrl = s3Template.createSignedGetUrl("bucket_name", "file.txt", Duration.ofMinutes(5));
Go to reference documentation for more details.
Secrets Manager integration now supports binary secrets and allows setting properties prefix to avoid collision with other property sources.
spring.config.import=optional:aws-secretsmanager:/secrets/database-secrets?prefix=db.
Go to reference documentation for more details.
We are aware that 3.0 release breaks existing code but this was the only sensible way we could evolve the framework and meet the demand in constrained time we have. We are very open for your feedback and appreciate any shoutout on social media and Github ⭐️.
This release would not happen without our wonderful community. Big thanks for your bug reports, ideas and pull requests!
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-M3...v3.0.0-RC1
Published by maciejwalkowiak over 1 year ago
Big thanks to all contributors!
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.4.3/reference/html/index.html
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v2.4.2...v2.4.3
Published by maciejwalkowiak about 2 years ago
Spring Cloud AWS 3.0.0 M3 is the first release compatible with Spring Boot 3.0. At the same time, there is no compatibility anymore with Spring Boot 2.x.
SecretsManager
& ParameterStore
property sources by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/536
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-M3/reference/html/index.html
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-M2...v3.0.0-M3
Big thanks to all contributors!
pom.xml
by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/509
testcontainers-localstack
. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/512
package-info.java
to DynamoDB auto-configuration. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/513
spring-cloud-aws-starters
module and refer each starter individually from the root pom.xml
. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/516
SnsTemplate
and SnsSmsTemplate
beans. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/543
SecretsManager
& ParameterStore
property sources by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/536
@AutoConfigureMetrics
with @AutoConfigureObservability
. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/545
2.18.0
and 1.12.326
. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/547
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-M2...v3.0.0-M3
Published by maciejwalkowiak about 2 years ago
M2 is the next milestone in our journey to rewrite Spring Cloud AWS to use AWS SDK v2.
The most important changes since M1:
Completely rewritten SQS integration 🔥 #374:
SqsAsyncClient
@SqsListener
@SqsTest
annotation for slice testing of SQS listenersSqsTemplate
for sending messages will be added in M3.
New integration #339 🚀
DynamoDbClient
DynamoDbTemplate
simplifying integration with DynamoDB Enhanced Client
micrometer-registry-cloudwatch2
#237Improvement to S3Resource
:
Improvements to cross-region S3 client:
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-M2/reference/html/index.html
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-M1...v3.0.0-M2
Big thanks to all contributors!
make build
by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/430
SqsTest
to new SQS implementation. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/493
cdklocal
in samples. by @maciejwalkowiak in https://github.com/awspring/spring-cloud-aws/pull/381
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v3.0.0-M1...v3.0.0-M2
Published by maciejwalkowiak over 2 years ago
Big thanks to all contributors!
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.4.2/reference/html/index.html
Published by maciejwalkowiak over 2 years ago
Spring Cloud AWS 3.0 is a rewrite of the project using AWS SDK v2 for Java. Since this has required a major refactoring, we took it as an opportunity to revisit all the assumptions and integrations modules. As a result, we've produced a library that is lightweight, flexible, causes less headache, provides simple to use abstractions and also works much better with Kotlin.
Only a subset of integrations have been migrated in M1:
We strongly recommend checking out completely rewritten reference documentation for a deep dive into each integration including code samples:
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-M1/reference/html/index.html
Dropped support for XML configuration and @EnableXXX
annotations. Spring Cloud AWS can be used either with Spring Boot auto-configurations, or beans have to be created manually.
All Spring Cloud AWS related properties have moved from cloud.aws
to spring.cloud.aws
prefix.
Endpoint used by all integrations can be configured through a property:
spring.cloud.aws.endpoint=http://localhost:4566
Endpoint used by an individual integration can be also defined per integration:
spring.cloud.aws.s3.endpoint=http://localhost:4566
This is especially useful when Localstack is used instead of real AWS.
Credentials and region are resolved through the new interfaces from AWS SDK v2 for Java: software.amazon.awssdk.auth.credentials.AwsCredentialsProvider
and software.amazon.awssdk.regions.providers.AwsRegionProvider
.
It is possible to configure both through properties. In special cases, users can provide custom implementations of these interfaces to opt-out from ones that are auto-configured. Check the reference documentation for more details.
Every class field, method parameter and return value is annotated with @NonNull
or @Nullable
annotation, making it easier to use with null safe languages like Kotlin.
AwsClientBuilderConfigurer
simplifies applying same configuration for endpoint, region and credentials to user defined AWS clients beans:
import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer;
...
@Bean
TextractClient textractClient(AwsClientBuilderConfigurer configurer) {
return configurer.configure(TextractClient.builder()).build();
}
AwsClientCustomizer
simplifies customizing AWS clients created by integrations without overwriting complete beans:
import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer;
...
@Component
class S3AwsClientClientConfigurer implements AwsClientCustomizer<S3ClientBuilder> {
@Override
public ClientOverrideConfiguration overrideConfiguration() {
...
}
@Override
public SdkHttpClient httpClient() {
...
}
}
Note that AwsClientCustomizer
is a parameterized type, and the type determines to which client customization gets applied.
io.awspring.cloud.s3
package.SimpleStorageResource
has been renamed to S3Resource
spring.cloud.aws.s3
propertiesResourcePatternResolver
.S3Client
implementation provided by Spring Cloud AWS can access buckets in any region. When accessed bucket is in other region than the one provided for S3 auto-configuration, the CrossRegionS3Clients
handles redirects sent by S3 transparently.
S3 integration comes with three implementations of the OutputStream
used under the hood by S3Resource
for writing data to S3.
InMemoryBufferingS3OutputStream
(default) - buffers content of the uploaded file in memory and uploads to S3 using multipart uploadDiskBufferingS3OutputStream
- saves uploaded file to temporary folder on disk and uploads to S3 in single chunkTransferManagerS3OutputStream
- uses experimental Transfer Manager to upload files to S3. Requires adding a dependency to software.amazon.awssdk:s3-transfer-manager
To use different output stream than one provided by auto-configuration, define a bean of type S3OutputStreamProvider
- either with custom implementation or one of: DiskBufferingS3OutputStreamProvider
, TransferManagerS3OutputStreamProvider
, InMemoryBufferingS3OutputStreamProvider
.
S3Template
is a new class that simplifies performing common operations on S3 buckets and S3 objects. It also supports reading and persisting Java objects to S3. Spring Cloud AWS provides Jackson based Jackson2JsonS3ObjectConverter
which serialized persisted objects into JSON files. Custom object converted can be provided by defining a bean of type S3ObjectConverter
.
Both S3Resource
and S3Template
support setting object metadata through a builder-like object ObjectMetadata
.
If uploaded file to S3 does not have contentType
metadata property set, both S3Resource
and S3Template
will resolve content type through S3ObjectContentTypeResolver
. The default implementation resolves content type by file extension. The framework provides a comprehensive support for 817 file extensions.
SES integration does not bring any new features in comparison to what's offered in version 2.4.1.
SES integration can be configured using properties with spring.cloud.aws.ses
prefix.
On top of what's been offered in 2.4.1, SNS integration provides a simple interfaces for sending notifications with custom payload and headers using SnsOperations#sendNotification
method and SnsNotification
object.
Because SNS Message Manager has not been migrated to AWS SDK v2, we had to drop support for message signature validation. We hope AWS finishes migration before Spring Cloud AWS reaches 3.0 GA.
SNS integration can be configured using properties with spring.cloud.aws.sns
prefix.
spring.config.import=aws-secretsmanager
is now possibleSecretsManagerClient
Secrets Manager integration can be configured using properties with spring.cloud.aws.secretsmanager
prefix.
spring.config.import=aws-parameterstore
is now possibleSsmClient
Parameter Store integration can be configured using properties with spring.cloud.aws.parameterstore
prefix.
Reference documentation has been rewritten with simplicity and "straight to the point" attitude.
📗 https://docs.awspring.io/spring-cloud-aws/docs/3.0.0-M1/reference/html/index.html
We are aware that this release breaks existing code but this was the only sensible way we could evolve the framework and meet the demand in constrained time we have. We are very open for your feedback and appreciate any shoutout on social media and Github ⭐️.
This release would not happen without our wonderful community. Big thanks for your bug reports, ideas and pull requests!
Full Changelog: https://github.com/awspring/spring-cloud-aws/compare/v2.4.1...v3.0.0-M1
Published by maciejwalkowiak over 2 years ago
This release backports a fix from 2.4.1 to 2.3.x for Spring Boot 2.4 & 2.5 compatibility
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.3.5/reference/html/index.html
Published by maciejwalkowiak over 2 years ago
Big thanks to all contributors!
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.4.1/reference/html/index.html
Published by MatejNedic over 2 years ago
This version brings compatibility with Spring Boot 2.6 and few enhancements:
Add @SqsTest
annotation to simplify SQS integration testing (https://github.com/awspring/spring-cloud-aws/pull/235) @maciejwalkowiak
Complete example on how to test SQS listener with @SqsTest
, Localstack and Testcontainers.
Verify SNS messages in HTTP subscription mode (https://github.com/awspring/spring-cloud-aws/pull/240) @MatejNedic @WtfJoke @maciejwalkowiak
Upgrade to Spring Cloud Build commons to 3.1.0 (https://github.com/awspring/spring-cloud-aws/pull/211) @spencergibb
Big thanks to all contributors!
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.4.0/reference/html/index.html
Published by maciejwalkowiak over 2 years ago
This version brings several bug fixes and small improvements:
QueueMessagingTemplate
(#230) @maciejwalkowiakSqsMessageDeletionPolicy
is NO_REDRIVE
if one provided by parameter is null
. (#231) @maciejwalkowiakBig thanks to all contributors!
📗 https://docs.awspring.io/spring-cloud-aws/docs/2.3.4/reference/html/index.html