我目前正在尝试使用SSM作为密钥提供者来设置confd POC,我们目前在AWS上拥有一个帐户,该帐户是root帐户,并且具有多个角色来分隔环境。
当前我的AWS配置看起来像这样
[default]
region=eu-west-1
output=json
role_arn=arn:aws:iam::*:role/OrganizationAccountAccessRole
根据命令,这对我来说很好用
aws ssm get-parameters --names /eric
还给我为此poc创建的密钥
PARAMETERS arn:aws:ssm:eu-west-1:*:parameter/eric * /eric String test 1
对于confd来说,
confd -onetime -backend ssm --log-level debug
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: DEBUG Processing key=/eric
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: DEBUG Got the following map from store: map[]
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: DEBUG Using source template /etc/confd/templates/myconfig.conf.tmpl
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: DEBUG Compiling source template /etc/confd/templates/myconfig.conf.tmpl
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: ERROR template: myconfig.conf.tmpl:2:17: executing "myconfig.conf.tmpl" at <getv "/eric">: error calling getv: key does not exist: /eric
2019-04-07T18:25:08Z 3ce95f057568 confd[359]: FATAL template: myconfig.conf.tmpl:2:17: executing "myconfig.conf.tmpl" at <getv "/eric">: error calling getv: key does not exist: /eric
我做了一个简短的测试,并在根帐户而不是角色帐户中创建了密钥/ eric,然后按预期工作,这使我感到奇怪,是否有任何隐藏的配置供confd使用“ 角色?因为目前看来它并未考虑到该角色。
我的confd模板看起来像
[template]
src = "myconfig.conf.tmpl"
dest = "/tmp/myconfig.conf"
keys = [
"/eric"
]
我的confd配置看起来像
database_url = {{getv "/eric"}}
有人可以给我有关此特定问题的任何指导吗?
答案 0 :(得分:0)
好吧,我发现了这个问题,在查看了该项目当前打开的拉取请求后,我的AWS配置已被完全忽略。
https://github.com/kelseyhightower/confd/pull/736,作者提到
现有会话创建会忽略AWS配置选项,除非 env var AWS_SDK_LOAD_CONFIG已导出。 SharedConfigState选项 消除了这种需求。
因此,是的,将var AWS_SDK_LOAD_CONFIG设置为true可以做到这一点,我认为当此pr得到合并时,将不需要此“解决方法”。