【问题标题】:AWS CodeBuild cannot print parameter store environment variablesAWS CodeBuild 无法打印参数存储环境变量
【发布时间】:2020-09-29 02:58:54
【问题描述】:

我在参数存储中跟踪一个数字,并在 CodeBuild 执行期间访问它。 CodeBuild 环境是一台 Windows 机器。我想打印环境变量。

我尝试了以下方法:

  1. 按原样打印环境变量:echo $NUMBER
  2. 将环境变量分配给另一个变量并打印:$TMP=$NUMBER; echo $TMP
  3. 将环境变量回显到文本文件并打印该文本文件:Add-Content -Path number.txt -Value $NUMBER; Get-Content number.txt

所有这些都将打印为星号。看起来 CodeBuild 会自动尝试审查它认为敏感的环境变量(可能是所有参数存储变量?我找不到任何文档)。这个特定的环境变量不敏感,我们想打印它。有没有可能的方法?

【问题讨论】:

  • 那么你在参数存储或环境变量中有一些价值吗?它使您正在尝试做的事情感到困惑。
  • 我在 Parameter Store 中有一个值。 CodeBuild 具有能够从 Parameter Store 中提取参数并将其存储为环境变量的功能。所以我正在尝试打印该环境变量。谢谢@Marcin

标签: amazon-web-services continuous-integration aws-codebuild


【解决方案1】:

几个月前,CodeBuild 在构建日志中实现了对机密的最大努力屏蔽。由于 Parameter Store 的大多数用例是存储密码等敏感信息,因此 CodeBuild 从构建日志中屏蔽了这些信息。当设置为机密的值是常见的字符串(如数字或常用词)时,这些值将在整个日志中被屏蔽。

我们对使用简单环境变量的建议是使用纯文本环境变量,而不是 Parameter Store 或 Secrets Manager。当在日志中找到相同的字符串时,Parameter Store 和 Secrets Manager 值将被屏蔽。

安全性通常不是方便的朋友,因此对此表示歉意,但避免泄露机密是这里的主要关注点。

这将很快在文档中正确记录。

编辑1:

根据我的测试,如果 Param 存储变量的值为“ABC”,那么在日志中任何有“ABC”的位置(即使它位于任何其他无辜变量中)都会被屏蔽。

我想我们又回到了原点,请使用 CLI 直接获取值(对于秘密值,强烈建议继续使用 buildspec 'parameter-store' 构造):

  - MY_VAR=$(aws ssm get-parameter --name BUILD_NUM --query "Parameter.Value" --output text)
  - echo $MY_VAR

【讨论】:

  • 感谢@shariqmaws 的澄清。我们选择使用 Parameter Store 是因为参数的目的是控制应用程序的版本,并且我们需要对其进行跟踪。它不是一个常数,每次构建都会增加。你能推荐另一种解决方法吗?再次感谢。
  • 你能告诉我 Param 存储中的确切值是多少(如果它不是秘密的话)
  • 它总是一个自然数,比如说6。谢谢@shariqmaws。
  • 每次构建都会增加。我们使用它而不是内置 CodeBuild 编号,以防我们需要重新创建 CodeBuild 实例并且不希望内部版本号重置为 1。
  • 可能是因为您没有注释掉“parameter-store:”构造?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2020-05-09
  • 2017-06-17
  • 1970-01-01
相关资源
最近更新 更多