VMware offers training and certification to turbo-charge your progress.Learn more
The following is a guest post from the maintainers of the Spring Cloud AWS project.
On behalf of the Spring Cloud AWS team and the community around Spring Cloud AWS, I am happy to share that we have just released Spring Spring Cloud AWS 2.3 - a version that is compatible with Spring Boot 2.4 and Spring Cloud 2020.0.
This release contains a new integration with Cognito and a bunch of small improvements, fixes, and changes that we believe will make working with Spring Cloud AWS more pleasurable.
I believe the most surprising change is that now you need to include a separate Spring Cloud AWS BOM in your
<dependencyManagement> <dependencies> <dependency> <groupId>io.awspring.cloud</groupId> <artifactId>spring-cloud-aws-dependencies</artifactId> <version>2.3.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Also, dependencies group ids have to be updated to
<dependencies> <dependency> <groupId>io.awspring.cloud</groupId> <artifactId>spring-cloud-starter-aws-messaging</artifactId> </dependency> </dependencies>
All classes have moved from the
The most important changes organized by Spring Cloud AWS module:
ClientConfiguration, used when initializing AWS clients, can be now defined by creating a bean named "com.amazonaws.ClientConfiguration.BEAN_NAME".
It’s also possible to provide
ClientConfiguration for particular integration by defining a bean of type
ClientConfiguration and a name specific to the integration - for example, for SQS client, the bean name must be
You can read more about client configuration
To improve startup times for applications that do not use EC2 instance data,
ContextInstanceDataAutoConfiguration is disabled by default. To enable it, set
AWS SDK has been upgraded to 1.11.951
For each integrated AWS service, you can configure Spring Cloud AWS to use a custom endpoint by setting configuration properties. This example shows how to do so:
cloud.aws.s3.endpoint=http://localhost:4566 cloud.aws.sqs.endpoint=http://localhost:4566 cloud.aws.rds.endpoint=http://localhost:4566
Using a custom endpoint can be especially useful when you use Localstack in integration tests.
XML Configuration is now deprecated and is going to be removed in the next major version upgrade.
In addition to global region configuration, each integration can have a different region set statically. Read more about configuring regions.
@EnableXXX annotations have been deprecated. We recommend using Spring Boot auto-configurations.
Each service can be now enabled or disabled by setting the
DefaultAWSRegionProviderChain are used now by default. The
cloud.aws.region.use-default-aws-region-chain properties were dropped.
To simplify project setup for applications that do not use CloudFormation support, CloudFormation-related auto-configurations have been disabled by default. To enable CloudFormation support in Spring Cloud AWS, you must add the following dependency to trigger
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-cloudformation</artifactId> </dependency>
SES support has been extracted from the
context module to separate
spring-cloud-aws-ses module. There is also a dedicated starter:
Spring Cloud AWS comes with basic support for AWS Cognito, simplifying configuring OAuth2. Read more about Cognito support.
spring.config.importintroduced in Spring Cloud 2020.0. Read more about integrating your Spring Cloud application with the AWS parameter store.
spring.config.import, introduced in Spring Cloud 2020.0 Read more about integrating your Spring Cloud applicationwiththeAWS secrets manager.
SimpleMessageListenerContainer#isQueueRunningmethod is now visible to extending classes. #350
queueStopTimeoutcan be configurable through
SimpleMessageListenerContainerFactory. #504 #507
ObjectMapperinstance, use one present in the application context. #533, #522, and #540
content-type property on the S3 object metadata. #262
@NotificationMessageMappingnow properly handles special characters. #645
Make RDS instance name configuration more flexible. For example, for an instance named
test, instead of setting
cloud.aws.rds.test.username=user property, you must now set:
spring-cloud-aws-actuator module. Instead, we recommend using the dependency to
micrometer-registry-cloudwatch directly. #571
On the 17th of April, 2020, it was announced that Spring Cloud GCP and Spring Cloud AWS are no longer part of the Spring Cloud release train. Not being a part of the release train also means moving from the Spring Cloud organization on Github and, as an effect, having new Maven coordinates and package names.
We picked awspring as the top level name and
io.awspring.cloud as a top level package for Spring Cloud AWS, which leaves us opportunity to create other Spring-related and AWS-related, but not necessarily Spring Cloud-related, packages.
With the great help of Spencer Gibb and other folks from the Spring team, we moved to the new repository and created a new home for Spring Cloud AWS: https://github.com/awspring/spring-cloud-aws.
From now on, our efforts focus on 3.0 - based on AWS SDK 2.0. This release will be an opportunity to revisit every implemented module and align it better with Spring Boot conventions.
2.3.x will receive bug fixes and will be open for community contributions, but we - as the core team - will not focus on adding new features or modules.
2.2.x, being a part of the Hoxton release train, will continue to be maintained in the original Spring Cloud repository.
Spring Cloud AWS is a community project with Maciej Walkowiak, Eddú Meléndez, and Matej Nedic in the Core Team. We are more than happy to take contributions from the community. In the near future, we are going to update contributing guidelines and publish the roadmap for Spring Cloud 3.0.