我想在Secrets Manager中创建一个新机密。机密必须是键/值对。当我使用CLI创建秘密时,它以纯文本而不是键/值对的形式存储:
aws secretsmanager create-secret --name github/oauthtoken \
--description "GitHub OAuth Token" \
--secret-string file:///tmp/github_oauth.json
github_oauth.json
[
{
"Key": "oauth_token",
"Value": "MYOAUTHTOKEN"
}
]
当我尝试解决CloudFormation中的秘密时,出现错误:
Secrets Manager can?t find the specified secret.
当我在Secrets Manager用户界面中访问该机密时,该机密是纯文本格式,并在“密钥” /值下显示错误:
The secret value can't be converted to key name and value pairs
如何在Secrets Manager中创建存储为键/值对的机密?
答案 0 :(得分:1)
如您正确发现的那样,SecretsManager控制台和SecretsManager-CloudFormation集成默认将SecretString视为JSON对象。
控制台将解析此JSON并显示键/值对。在CloudFormation中,当SecretString是JSON对象时,您可以使用动态引用来获取单个JSON值。
这当然不会强迫您在SecretString中使用键/值对。您可以在其中包含任何自由文本,然后在控制台的“纯文本”选项卡下对其进行查看。在CloudFormation中,您可以使用动态引用来引用整个SecretString,并避免将其解析为JSON。
您还可以通过CloudFormation创建密钥/值对或自由文本的机密,以及设置资源策略,轮换等。
参考-
答案 1 :(得分:0)
我已经尝试过这种方式:
aws secretsmanager create-secret --name github / oauthtoken
--description“ GitHub OAuth令牌”
--secret-string'{“ oauth_token”:“ MYOAUTHTOKEN”}'--region us-east-1