首页 > 解决方案 > AWS Secret 无法转换为键名和值对

问题描述

我有一个 python 脚本,它在 AWS 中创建一些访问密钥并将它们存储在秘密管理器中。

但是,当我存储密钥时,我收到一条错误消息:

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

秘密像这样存储在秘密管理器中(混淆了密钥):

[{'Access Key': 'AKIA5AODVC64THTZNML7'}, {'Secret Key': 'SecretSecretsecretSecretSecretSecretSecr'}]

我的脚本使用这些行来创建秘密:

secret_name = 'my_secret'
secret_description = 'describing the secret'
kms_key_id = create_kms_key()
key_info = str([{"Access Key":access_key},{"Secret Key":secret_key}])
aws_secret = `secrets_client.create_secret(Name=secret_name,Description=secret_description,KmsKeyId=kms_key_id,SecretString=key_info,Tags=[{'Key': 'Name','Value': user_name}])`

如何将访问/密钥转换为机密管理器足够理解以转换为密钥/值对的格式?

标签: aws-secrets-manager

解决方案


首先,您应该重新考虑是否真的需要在 Secrets Manager 中存储 AWS 访问密钥。您打算如何获取将用于调用 Secrets Manager 的凭据?

例如,查看使用临时角色凭据- 不要使用您必须从 SecretsManager 获取另一个凭据对的凭据。使用您必须获得的信用来代替临时信用。

对于您的实际问题,您似乎正在尝试在控制台中查看秘密值(因为此时会显示错误“秘密值无法转换为键名和值对”)。您用于创建机密的 python 代码片段工作正常。当控制台无法将 SecretString 解析为键值对时会显示该错误。这是预期的行为,因为您在 SecretString 中的顶级 obj 是一个数组。

如果单击红色错误显示框正上方的“纯文本”选项卡,您将看到存储的 SecretString,而无需任何尝试解析为键值对。


推荐阅读