AWS Codebuild 知道我的秘密值,但不会将它们注入我的命令

AWS Codebuild knows my secret values, but won't inject them into my commands

我有一个秘密 important_secret 存储在秘密管理器中,秘密值为

{
    "tf_cloud_token": "super_secret"
}

在代码构建控制台中,我已将其链接起来:

在我的构建规范中,我有:

{
  "version": 0.2,
  "env": {
    "variables": {},
    "secrets-manager": {
      "SECRET_TF_CLOUD_TOKEN": "important_secret:tf_cloud_token",
    },
    "git-credential-helper": "yes"
  },
  "phases": {
    "build": {
      "commands": [
        "printf 'blah \"$SECRET_TF_CLOUD_TOKEN\"' > ~/.terraformrc",
        "more ~/.terraformrc",
        ...

但它只会记录 blah "$SECRET_TF_CLOUD_TOKEN"

但是,当我将其更改为:

    ...
    "commands": [
      "printf 'blah \"super_secret\"' > ~/.terraformrc",
      "more ~/.terraformrc"
      ...

它将记录 blah "***"

因此,它肯定知道我的秘密值,但它没有正确注入它。

如何让它使用我为它准备的SECRET_TF_CLOUD_TOKEN环境变量?

修复字符串插值:"echo blah \"$SECRET_TF_CLOUD_TOKEN\" > ~/.terraformrc"

SECRET_TF_CLOUD_TOKEN="my-secret"

echo blah \"$SECRET_TF_CLOUD_TOKEN\" > ~/.terraformrc

cat ~/.terraformrc
# -> blah "my-secret"