使用 Spring Cloud Vault 在 Spring 引导应用程序中自动更新 AWS 凭证

Automatically renew AWS credentials in a Spring Boot application using Spring Cloud Vault

我正在尝试创建一个 Spring 定期从 AWS S3 获取数据的启动应用程序。

A​​WS S3 凭据在应用程序启动时使用 Spring Cloud Vault 从 Vault 中获取。

我的问题是,由于 Vault 政策,AWS S3 凭据的生命周期有限,因此我必须不时重新启动我的应用程序以从 Vault 获取新凭据

有没有办法使用这些凭据自动重启 bean?

TL;DR

不,没有自动,但你可以自己做。

越读越长

Spring Boot 和 Spring Cloud 并非真正旨在不间断地对配置应用持续更新。 Spring Cloud Config 附带 Refresh Scope 支持,允许使用 @RefreshScope 注释 bean 并触发重新初始化的 bean 的刷新。此方法需要与消息总线集成或触发刷新端点。

另一种替代方法仅限于 AWS 功能,它提供自己的 AWSCredentialsProvider 实现,该实现由对您的凭证应用轮换的 Vault PropertySource 支持。这需要您提供一些与 VaultConfigurer 集成的代码,甚至直接通过 SecretLeaseContainer 来获取秘密生命周期事件回调。参见 here for an integration example

有一个 ticket asking for the same question 包含此模式未广泛应用的背景。