领先一步
VMware提供培训和认证,以加速您的进步。
了解更多以下是来自 Spring Cloud AWS 项目维护人员的客座文章。
我代表 Spring Cloud AWS 团队和围绕 Spring Cloud AWS 的社区,很高兴地分享我们刚刚发布了 Spring Spring Cloud AWS 2.3 - 一个与 Spring Boot 2.4 和 Spring Cloud 2020.0 兼容的版本。
此版本包含与 Cognito 的新集成以及许多我们认为将使使用 Spring Cloud AWS 更愉快的细微改进、修复和更改。
我认为最令人惊讶的更改是,现在您需要在 pom.xml
文件中包含一个单独的 Spring Cloud AWS BOM
<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>
此外,依赖项组 ID 必须更新为 io.awspring.cloud
<dependencies>
<dependency>
<groupId>io.awspring.cloud</groupId>
<artifactId>spring-cloud-starter-aws-messaging</artifactId>
</dependency>
</dependencies>
所有类都已从 org.springfamework.cloud.aws
移动到 io.awspring.cloud
包中。
按 Spring Cloud AWS 模块组织的最重要的更改
ClientConfiguration
ClientConfiguration
(在初始化 AWS 客户端时使用)现在可以通过创建名为“com.amazonaws.ClientConfiguration.BEAN_NAME”的 Bean 来定义。
也可以通过定义 ClientConfiguration
类型的 Bean 和特定于集成的名称来为特定集成提供 ClientConfiguration
- 例如,对于 SQS 客户端,Bean 名称必须为 sqsClientConfiguration
。
您可以阅读更多关于 客户端配置 的信息
为了改善不使用 EC2 实例数据的应用程序的启动时间,默认情况下禁用 ContextInstanceDataAutoConfiguration
。要启用它,请将 cloud.aws.instance.data.enabled
设置为 true
。
AWS SDK 已升级到 1.11.951
对于每个集成的 AWS 服务,您可以通过设置配置属性来配置 Spring Cloud AWS 以使用自定义端点。此示例演示了如何执行此操作
cloud.aws.s3.endpoint=https://127.0.0.1:4566
cloud.aws.sqs.endpoint=https://127.0.0.1:4566
cloud.aws.rds.endpoint=https://127.0.0.1:4566
当您在集成测试中使用 Localstack 时,使用自定义端点尤其有用。
XML 配置现已弃用,将在下一个主要版本升级中删除。
除了全局区域配置之外,每个集成还可以静态设置不同的区域。阅读更多关于 配置区域 的信息。
@EnableXXX
注解@EnableXXX
注解已弃用。我们建议使用 Spring Boot 自动配置。
现在可以通过设置 enabled
属性来启用或禁用每个服务。
DefaultAWSCredentialsProvider
和 DefaultAWSRegionProviderChain
现在默认使用。cloud.aws.credentials.use-default-aws-credentials-chain
和 cloud.aws.region.use-default-aws-region-chain
属性已删除。
为了简化不使用 CloudFormation 支持的应用程序的项目设置,CloudFormation 相关的自动配置已默认禁用。要在 Spring Cloud AWS 中启用 CloudFormation 支持,您必须添加以下依赖项以触发 ContextStackAutoConfiguration
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-cloudformation</artifactId>
</dependency>
SES 支持已从 context
模块提取到单独的 spring-cloud-aws-ses
模块中。还有一个专用的启动器:spring-cloud-aws-ses-starter
。
Spring Cloud AWS提供了对AWS Cognito的基本支持,简化了OAuth2的配置。阅读更多关于Cognito支持的信息。
spring.config.import
加载属性。阅读更多关于将您的Spring Cloud应用程序与AWS参数存储集成的信息。javax.validation:validation-api
的依赖。spring.config.import
加载属性。阅读更多关于将您的Spring Cloud应用程序与AWS密钥管理器集成的信息。javax.validation:validation-api
的依赖。SimpleMessageListenerContainer#isQueueRunning
方法现在对扩展类可见。#350SqsListener
参数中本地SQS消息的支持。#295queueStopTimeout
可以通过SimpleMessageListenerContainerFactory
进行配置。#504 #507SqsListener
中解析SqsMessageHeaders
的支持。添加了ApproximateFirstReceiveTimestamp
、ApproximateReceiveCount
和SentTimestamp
标头#296ObjectMapper
实例,而是使用应用程序上下文中存在的实例。#533、#522和#540SimpleStorageResource
在S3对象元数据上设置content-type
属性。#262
使RDS实例名称配置更加灵活。例如,对于名为test
的实例,您现在必须设置cloud.aws.rds.test.username=user
属性,而不是设置。
cloud.aws.rds.instances[0].db-instance-identifier=test
cloud.aws.rds.instances[0].username=user
删除了spring-cloud-aws-actuator
模块。相反,我们建议直接使用对micrometer-registry-cloudwatch
的依赖。#571
2020年4月17日,宣布Spring Cloud GCP和Spring Cloud AWS不再是Spring Cloud发布列车的一部分。不属于发布列车也意味着从Github上的Spring Cloud组织迁移,并且因此拥有新的Maven坐标和包名称。
我们选择awspring作为顶级名称,并选择io.awspring.cloud
作为Spring Cloud AWS的顶级包,这使我们有机会创建其他与Spring相关和与AWS相关,但不一定与Spring Cloud相关的包。
在Spencer Gibb和Spring团队的其他成员的大力帮助下,我们迁移到了新的存储库,并为Spring Cloud AWS创建了一个新家:https://github.com/awspring/spring-cloud-aws。
从现在开始,我们的工作重点是3.0 - 基于AWS SDK 2.0。此版本将是一个机会,可以重新审视每个已实现的模块,并使其更好地与Spring Boot约定保持一致。
2.3.x将接收错误修复,并将对社区贡献开放,但我们 - 作为核心团队 - 将不会专注于添加新功能或模块。
2.2.x作为Hoxton发布列车的一部分,将继续在原始Spring Cloud存储库中维护。
Spring Cloud AWS是一个社区项目,核心团队成员包括Maciej Walkowiak、Eddú Meléndez和Matej Nedic。我们非常乐意接受来自社区的贡献。在不久的将来,我们将更新贡献指南并发布Spring Cloud 3.0路线图。
敬请期待。