在身份验证之前在 AWS buildspec 中使用 jq - 最佳实践?

Using jq in AWS buildspec before authentication - best practice?

我的 AWS CodeBuild buildspec.yml 目前看起来像这样:

  1. docker拉jq
  2. PASSWORD=`aws secretsmanager get-secret-value ... | docker 运行 jq '.password'`
  3. docker 登录
  4. (拉取实际图像并继续构建)

换句话说,为了登录 Docker 我需要 Secrets Manager 的帐户密码,为了解析 JSON 格式的秘密以隔离我需要的密码 jq,历史上 jq 来自 docker pull

但是现在对未经身份验证的请求进行了速率限制,初始拉取失败。

更标准的处理方法是什么?用 apt-get 或类似的方式安装 jq?使用其他一些已经可用的工具来解析 JSON?不要尝试存储 JSON 格式的秘密?还有别的吗?

如果有我还没有发现的标准做法,我不想以我自己独特的方式解决这个问题。

jq 已在基于 Amazon Linux 2 和 Ubuntu 的标准 CodeBuild 映像中可用。您可以通过检查这些图像的 Dockerfiles 来检查可用的软件包:

因此您不需要自己安装它,除非您使用的是非标准 CodeBuild 映像。

Codebuild 可以直接将secret 作为环境变量传递。您不需要使用 cli 命令来检索秘密。

env:
    secrets-manager: 
        key: secret-id:json-key:version-stage:version-id

勾选this