我正在尝试创建一个定期从 AWS S3 获取数据的 Spring Boot 应用程序。
AWS S3 凭证是在应用程序启动时使用 Spring Cloud Vault 从 Vault 中获取的。
我的问题是由于 Vault 政策,AWS S3 凭证的使用寿命有限,所以我必须不时重新启动我的应用程序才能从 Vault 获取新凭证
有没有办法使用这些凭据自动重启 bean?
我正在尝试创建一个定期从 AWS S3 获取数据的 Spring Boot 应用程序。
AWS S3 凭证是在应用程序启动时使用 Spring Cloud Vault 从 Vault 中获取的。
我的问题是由于 Vault 政策,AWS S3 凭证的使用寿命有限,所以我必须不时重新启动我的应用程序才能从 Vault 获取新凭证
有没有办法使用这些凭据自动重启 bean?
不,没有自动化,但你可以自己做。
Spring Boot 和 Spring Cloud 并不是真正用于不间断地对配置应用持续更新。Spring Cloud Config 附带Refresh Scope支持,允许使用注释 bean@RefreshScope
并触发重新初始化的 bean 的刷新。这种方法需要与消息总线集成或触发刷新端点。
另一种仅限于 AWS 功能的替代方案是提供自己的AWSCredentialsProvider
实施,该实施由 Vault 支持,该 VaultPropertySource
将轮换应用于您的凭证。这需要你提供一些代码来集成VaultConfigurer
甚至直接通过SecretLeaseContainer
来获取秘密的生命周期事件回调。有关集成示例,请参见此处。
有一张票要求相同的问题,其中包含为什么这种模式不能广泛适用的背景。