我正在尝试创建一个定期从AWS S3获取数据的Spring Boot应用程序。
AWS S3 凭证在应用程序启动时使用 Spring Cloud Vault 从 Vault 获取。
我的问题是,由于保险库策略,AWS S3 凭证的有效期有限,因此我必须不时重新启动应用程序才能从保险库获取新凭证
有没有办法使用这些凭据自动重新启动 bean?
TL;博士
不,没有自动性,但您可以自己做。
阅读时间越长
SpringBoot 和 Spring Cloud 并不是真正用于在不中断的情况下对配置进行持续更新。Spring Cloud Config附带了刷新范围支持,允许使用@RefreshScope
注释bean并触发重新初始化的bean的刷新。此方法需要与消息总线集成或触发刷新终结点。
另一种替代方法仅限于 AWS 功能,即提供自己的AWSCredentialsProvider
实施,该实施由对凭证应用轮换的 VaultPropertySource
提供支持。这需要您提供一些与VaultConfigurer
集成甚至直接通过SecretLeaseContainer
集成的代码,以获取机密生命周期事件回调。有关集成示例,请参阅此处。
有一张票要求同样的问题,其中包含为什么这种模式不广泛适用的背景。