S3 中的 Spring Boot 配置 - AWS beanstalk

Posted

技术标签:

【中文标题】S3 中的 Spring Boot 配置 - AWS beanstalk【英文标题】:Spring boot configs in S3 - AWS beanstalk 【发布时间】:2017-07-03 12:07:45 【问题描述】:

我有一个在 AWS beanstalk 中运行的spring boot 应用程序。它当前从src/main/resources/application.properties 文件中读取属性。我想通过在S3 中将属性作为文件提供来覆盖这些配置。所以我在S3s3://my-bucket/some_dir/application.properties 创建了一个文件。在 beanstalk 应用程序中,我在 Software Configuration 中提供了以下设置。

spring.config.location 的值为 s3://my-bucket/some_dir/application.properties

重新启动应用程序,但我仍然看到旧值。我遵循了文档here。

我做错了什么?

【问题讨论】:

正如@Strelok 所指出的,这种方法行不通。我也许可以将脚本添加到.ebextensions 以从 S3 下载文件然后读取它,但是每次我想更新配置时都需要重新部署 jar。这不是我的应用程序的用例。相反,我现在正在应用程序的方法中读取 S3 文件并加载属性。这样,我可以在应用程序运行时调用该方法并重新加载配置。 【参考方案1】:

那是行不通的。 Spring 不仅仅理解 s3:// URL。为您的应用程序创建一个启动脚本,该脚本首先下载文件,然后使用--spring.config.locations 将其传递给您的应用程序。

【讨论】:

以上是关于S3 中的 Spring Boot 配置 - AWS beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring 集成轮询 S3 存储桶以获取文件

Spring Boot2 系列教程Spring Boot 中的静态资源配置

是否可以使用 Amazon Cognito 组来设置对 AW 资源(例如 Amazon DynamoDB 和 Amazon S3)的权限?

Spring Boot 中的外部化配置

Spring Boot 实践折腾记:Spring Boot中的容器配置和SSL支持

Spring Boot中的Spring安全配置未按预期工作[重复]