Spring Cloud AWS 2.3 现已发布

发布 | Spencer Gibb | 2021年3月17日 | ...

以下是来自 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 版本升级

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 配置

XML 配置现已弃用,将在下一个主要版本升级中删除。

每个集成的可配置区域

除了全局区域配置之外,每个集成还可以静态设置不同的区域。阅读更多关于 配置区域 的信息。

弃用 @EnableXXX 注解

@EnableXXX 注解已弃用。我们建议使用 Spring Boot 自动配置。

简化禁用集成

现在可以通过设置 enabled 属性来启用或禁用每个服务。

简化 SDK 配置

DefaultAWSCredentialsProviderDefaultAWSRegionProviderChain 现在默认使用。cloud.aws.credentials.use-default-aws-credentials-chaincloud.aws.region.use-default-aws-region-chain 属性已删除。

CloudFormation

为了简化不使用 CloudFormation 支持的应用程序的项目设置,CloudFormation 相关的自动配置已默认禁用。要在 Spring Cloud AWS 中启用 CloudFormation 支持,您必须添加以下依赖项以触发 ContextStackAutoConfiguration

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-cloudformation</artifactId>
</dependency>

SES

SES 支持已从 context 模块提取到单独的 spring-cloud-aws-ses 模块中。还有一个专用的启动器:spring-cloud-aws-ses-starter

Cognito

Spring Cloud AWS提供了对AWS Cognito的基本支持,简化了OAuth2的配置。阅读更多关于Cognito支持的信息。

参数存储

  1. 支持通过Spring Cloud 2020.0中引入的spring.config.import加载属性。阅读更多关于将您的Spring Cloud应用程序与AWS参数存储集成的信息。
  2. 删除了对javax.validation:validation-api的依赖。

密钥管理

  1. 支持通过Spring Cloud 2020.0中引入的spring.config.import加载属性。阅读更多关于将您的Spring Cloud应用程序与AWS密钥管理器集成的信息。
  2. 删除了对自动配置模块 #526 的依赖。
  3. 删除了对javax.validation:validation-api的依赖。
  4. 允许密钥管理前缀前面没有“/”#736

SQS

  1. SimpleMessageListenerContainer#isQueueRunning方法现在对扩展类可见。#350
  2. 添加了对SQS自定义数据类型的支持。#410
  3. 添加了对SqsListener参数中本地SQS消息的支持。#295
  4. 添加了消息删除策略的全局配置。#188
  5. 通过将队列停止时间增加到20秒来修复队列侦听器的优雅关闭。queueStopTimeout可以通过SimpleMessageListenerContainerFactory进行配置。#504 #507
  6. 添加了对SQS消息属性中基本类型和无特定数据类型的支持。#221#374
  7. 添加了对SqsListener中解析SqsMessageHeaders的支持。添加了ApproximateFirstReceiveTimestampApproximateReceiveCountSentTimestamp标头#296
  8. SQS侦听器默认情况下,不再创建自定义的ObjectMapper实例,而是使用应用程序上下文中存在的实例。#533#522#540
  9. 添加对SQS FIFO队列的支持 #40

S3

SimpleStorageResource在S3对象元数据上设置content-type属性。#262

SNS

  1. @NotificationMessageMapping现在可以正确处理特殊字符。#645
  2. 支持字符串数组SNS messageAttributeDataType#368

RDS

使RDS实例名称配置更加灵活。例如,对于名为test的实例,您现在必须设置cloud.aws.rds.test.username=user属性,而不是设置。

cloud.aws.rds.instances[0].db-instance-identifier=test
cloud.aws.rds.instances[0].username=user

#495

CloudWatch

删除了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

Spring Cloud AWS的未来是什么?

从现在开始,我们的工作重点是3.0 - 基于AWS SDK 2.0。此版本将是一个机会,可以重新审视每个已实现的模块,并使其更好地与Spring Boot约定保持一致。

2.3.x将接收错误修复,并将对社区贡献开放,但我们 - 作为核心团队 - 将不会专注于添加新功能或模块。

2.2.x作为Hoxton发布列车的一部分,将继续在原始Spring Cloud存储库中维护。

谁在幕后支持Spring Cloud AWS?

Spring Cloud AWS是一个社区项目,核心团队成员包括Maciej WalkowiakEddú MeléndezMatej Nedic。我们非常乐意接受来自社区的贡献。在不久的将来,我们将更新贡献指南并发布Spring Cloud 3.0路线图。

敬请期待。

获取Spring时事通讯

随时关注Spring时事通讯

订阅

领先一步

VMware提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看Spring社区中所有即将举行的活动。

查看全部