问题描述
我有一个使用 bosh 部署的大厅环境。它配置了 AWS Secrets Manager。
管道机密模板的格式为 /concourse/{{.Team}}/{{.Secret}}
我在 AWS Secrets Manager(其他类型的密钥)中创建了一个密钥 /concourse/team1/general
,其值如下所示。
{
"gitbranch": "master","hello": "2","general": "hi"
}
我在 hello-world.yml
团队中设置了一个大厅管道 team1
。
---
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: ["((general.gitbranch))"]
,则会出现以下错误
Failed to interpolate task config: cannot access field 'gitbranch' of non-map value ('string') from var: general.gitbranch
是否可以在大厅管道中从 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,它对解决问题很有帮助。
如果有人知道在控制台中执行此操作的方法,请告诉我。