java - 使用 AWS CodeBuild 在 Spring Boot 应用程序中注入环境变量
问题描述
我们使用 AWS 作为我们的 Spring Boot 应用程序 CI/CD 和托管解决方案。以下是我们集成中的实际服务及其目的:
- CodePipeline侦听 git repo 上的最新更改并开始构建过程
- CodeBuild构建一个实际的
.jar
文件 - CodePipeline将先前创建的文件保存到
S3
存储桶并将其部署到Elastic Beanstalk
实例
一切都像魅力一样。问题在于注入 Spring Boot 环境变量。
我们正在使用带有配置文件的 YAML 配置文件,以便为我们的应用程序提供变量。显然,我们不想将我们的.yml
文件保存在我们的 git 存储库中,但由于它们非常大(70 多个变量),因此指定每个变量的选项buildspec
似乎太多了。
我的问题是我们有什么选择?关于在构建期间注入 YAML 文件而不以某种方式公开暴露它的任何想法?或者我们应该单独使用每个变量。
谢谢,塞巴斯蒂安
解决方案
我的问题是我们有哪些选择?
存储配置变量的一种流行方式是在SSM Parameter Store中。
因此,不是直接将所有变量注入 CB,而是将它们存储在 Parameter Store 中,然后 CB 将从存储中读取参数。为此,您需要向 CB 角色添加权限才能访问商店。
如果您有这样的设置,那么您只需将一个环境变量传递给 CB - 要读取的参数的名称。因为你可以有多个,例如用于生产、开发或测试。
推荐阅读
- amazon-web-services - 为什么 AWS 使用 {"Key" : key, "Value" : val} 语法?
- reactjs - 预期的 ';' 在 JSX 构造函数定义中
- java - 检查Java中数组中复选框的状态
- lisp - lisp:连接任意数量的列表
- arrays - Lua中字符串数组的连接
- ios - 如何从firestore中的子集合文档中获取根文档?
- ios - 在 swift 5 中呈现 viewController 像弹出拨号一样打开
- php - 如何解决 CodeIgniter 中的跨会话问题?
- c# - 为什么 cURL 有效,但我的 HttpWebRequest 无效?
- java - 如何让 Eclipse 在源代码文件夹以外的不同文件夹中创建 .classpath、.settings 文件?