首页 > 解决方案 > 在 AWS Codebuild 中处理多个环境变量的更好方法

问题描述

我有一个连接到我的 Github 账户的 AWS Codebuild 项目。在我的 github 中,每个环境都有单独的分支。

我目前总共有 4 个环境(通过这种关系,有 4 个 github 分支):dev、qa、customer1-poc、customer2-prod。

现在我在我的项目中使用了大量环境变量,最初我在环境>环境变量部分的 Codebuild 项目中设置这些环境变量。因此,理想情况下,每个 env 有 4 个 env var,它们使用 env 名称进行区分。

例如,如果有一个名为apiKey的环境变量,它会在 codebuild 中按名称保存 4 次

apiKey_dev

apiKey_qa

apiKey_customer1poc

apiKey_customer2prod

你明白了。对于其他需要在所有环境中有所不同的环境变量也是如此。

这些环境变量从 buildspec 文件中读取并传递给 serverless.yml 文件。

现在的问题是,当我不断创建新环境(如更多 poc、prod 环境)时,我需要继续为每个环境复制一组环境变量,并且变得乏味。

有什么方法可以将这些环境变量保存在 Codebuild 项目之外,然后可以在成功构建后传递给 Lambda 函数?

标签: amazon-web-servicesaws-lambdaaws-codebuild

解决方案


CodeBuild 与 Parameter store 原生集成:

在参数存储中,您可以将变量保存为 json 名称,例如 /config/prod":

在此处输入图像描述

...然后在 CodeBuild 中检索它并通过 'jq' 2进行解析。这样,所有环境特定的变量都在一个地方。如果您采用这种方式,请确保使用 KMS 密钥加密 Param Store 变量(如果它包含机密)。另请检查 AWS Secrets Manager。


推荐阅读