AWS CodeBuild无法打印参数存储环境变量

时间:2020-06-09 20:04:19

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

我跟踪参数存储区中的数字,并在CodeBuild执行期间访问它。 CodeBuild环境是Windows计算机。我想打印环境变量。

我尝试了以下操作:

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

所有这些都将打印为星号。看起来CodeBuild会自动尝试检查它认为敏感的环境变量(也许所有参数存储变量?我找不到关于此的任何文档)。这个特定的env变量不敏感,我们希望将其打印出来。有没有办法?

1 个答案:

答案 0 :(得分:2)

几个月前,CodeBuild在构建日志中实施了尽力而为的秘密掩盖。由于参数存储的大多数用例是存储诸如密码之类的敏感信息,因此CodeBuild将其从构建日志中屏蔽掉。当设置为机密的值是诸如数字或通用词之类的通用字符串时,将在整个日志中被屏蔽。

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

安全通常不是方便的朋友,因此为此道歉,但要避免泄露秘密是这里的主要问题。

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

Edit1:

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

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

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