我正在尝试创建一个Spring Boot应用程序,该应用程序定期从AWS S3获取数据。
启动应用程序时,将使用Spring Cloud Vault从Vault中获取AWS S3凭证。
我的问题是,由于保险柜策略,AWS S3凭证的使用寿命有限,因此我必须不时重新启动应用程序才能从保险柜获取新凭证
有没有办法使用这些凭据自动重启bean?
答案 0 :(得分:1)
不,没有自动性,但是您可以自己做。
Spring Boot和Spring Cloud并不是真正用于不间断地对配置进行连续更新的。 Spring Cloud Config附带了Refresh Scope支持,该支持允许使用@RefreshScope
注释bean并触发刷新以重新初始化的bean。这种方法需要与消息总线集成或触发刷新端点。
另一种方法仅限于AWS功能,它提供了自己的AWSCredentialsProvider
实现,该实现由保管库PropertySource
支持,该保管库将旋转应用于凭证。这需要您提供一些与VaultConfigurer
甚至直接通过SecretLeaseContainer
集成的代码,以获得秘密的生命周期事件回调。参见here for an integration example。
有一个ticket asking for the same question,其中包含为何该模式无法广泛应用的背景。