如何在大厅中从 AWS Secrets Manager 访问密钥值对密钥?

How to access a key value pair secret from AWS Secrets Manager, in concourse?

我有一个使用 bosh 部署的大厅环境。它配置有 AWS Secrets Manager。 管道秘密模板的形式为 /concourse/{{.Team}}/{{.Secret}}

我在 AWS Secrets Manager 中创建了一个秘密 /concourse/team1/general(其他类型的秘密),其值如下。

{
  "gitbranch": "master",
  "hello": "2",
  "general": "hi"
}

我在 team1 团队中设置了一个大厅管道 hello-world.yml

---
jobs:
- name: job
  public: true
  plan:
  - task: check-secret
    config:
      platform: linux
      image_resource:
        type: registry-image
        source: { repository: busybox }
      run:
        path: echo
        args: ["((general))"]

此管道输出值为

{"gitbranch":"master","hello":"2","general":"hi"}

但是,如果我将管道中的 args(最后一行)更改为 args: ["((general.gitbranch))"],则会出现以下错误

failed to interpolate task config: cannot access field 'gitbranch' of non-map value ('string') from var: general.gitbranch

是否可以在 concourse 管道中从 AWS Secrets Manager 访问密钥中的任何键值对?如果是,如何操作?

回答我自己的问题。

通过使用带有参数 --secret-binary 的 cli 创建密钥,我能够实现获取键值对。

(之前,我是从 aws 控制台创建秘密的,它是作为秘密字符串创建的。)

我使用以下命令更新我的秘密以将秘密创建为二进制文件。

b64key=$(base64 secrets.json)
aws secretsmanager update-secret \
    --secret-id  /concourse/team1/general \
    --secret-binary "$b64key"

我找到了这个using-aws-secrets-manager-with-concourse-ci,它对解决问题很有帮助。

如果有人知道在控制台中执行此操作的方法,请告诉我。