2

我想在 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 UI 中访问密钥时,密钥是明文形式,在密钥/值下出现错误:

The secret value can't be converted to key name and value pairs

如何在 Secrets Manager 中创建存储为键/值对的密钥?

4

2 回答 2

3

我试过这样:

aws secretsmanager create-secret --name github/oauthtoken
--description "GitHub OAuth Token"
--secret-string '{"oauth_token":"MYOUTHTOKEN"}' --region us-east-1

于 2020-09-29T05:58:22.010 回答
3

正如您正确发现的那样,SecretsManager 控制台和 SecretsManager-CloudFormation 集成默认将 SecretString 视为 JSON 对象。

控制台解析此 JSON 并向您显示键/值对。在 CloudFormation 中,当 SecretString 是 JSON 对象时,您可以使用动态引用来获取单个 JSON 值。

当然,这并不强制您在 SecretString 中使用键/值对。您可以在其中拥有任何自由文本,并在“纯文本”选项卡下的控制台中查看它。在 CloudFormation 中,您可以使用动态引用来引用整个 SecretString 并避免将其解析为 JSON。

您还可以通过 CloudFormation 创建键/值对或自由文本的机密,以及设置资源策略、轮换等。

参考 -

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html#dynamic-references-secretsmanager

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-secretsmanager-secret.html

于 2019-05-01T17:40:21.857 回答