我目前正在尝试使用SSM作为密钥的提供者来设置confd POC,我们目前在AWS上有一个帐户,这是根帐户和多个角色来分离环境。
目前,我的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"}}关于这个具体问题,有人能给我指点一下吗?
发布于 2019-04-08 19:45:38
好了,我发现了问题,我的AWS配置被完全忽略了,在查看了这个项目当前打开的拉取请求后,我发现了这个问题。
https://github.com/kelseyhightower/confd/pull/736,作者提到
除非导出环境变量AWS_SDK_LOAD_CONFIG,否则
现有会话创建将忽略AWS配置选项。SharedConfigState选项消除了这一需求。
所以,是的,将var AWS_SDK_LOAD_CONFIG设置为true,我假设当这个pr get merge时,这个“变通方法”将不再是必要的。
https://stackoverflow.com/questions/55571642
复制相似问题