首页 > 解决方案 > 使用 AWS CodeBuild 在 Spring Boot 应用程序中注入环境变量

问题描述

我们使用 AWS 作为我们的 Spring Boot 应用程序 CI/CD 和托管解决方案。以下是我们集成中的实际服务及其目的:

  1. CodePipeline侦听 git repo 上的最新更改并开始构建过程
  2. CodeBuild构建一个实际的.jar文件
  3. CodePipeline将先前创建的文件保存到S3存储桶并将其部署到Elastic Beanstalk实例

一切都像魅力一样。问题在于注入 Spring Boot 环境变量。

我们正在使用带有配置文件的 YAML 配置文件,以便为我们的应用程序提供变量。显然,我们不想将我们的.yml文件保存在我们的 git 存储库中,但由于它们非常大(70 多个变量),因此指定每个变量的选项buildspec似乎太多了。

我的问题是我们有什么选择?关于在构建期间注入 YAML 文件而不以某种方式公开暴露它的任何想法?或者我们应该单独使用每个变量。

谢谢,塞巴斯蒂安

标签: javaamazon-web-servicesspring-bootyamlaws-codebuild

解决方案


我的问题是我们有哪些选择?

存储配置变量的一种流行方式是在SSM Parameter Store中。

因此,不是直接将所有变量注入 CB,而是将它们存储在 Parameter Store 中,然后 CB 将从存储中读取参数。为此,您需要向 CB 角色添加权限才能访问商店。

如果您有这样的设置,那么您只需将一个环境变量传递给 CB - 要读取的参数的名称。因为你可以有多个,例如用于生产、开发或测试。


推荐阅读