aws-secrets-manager - 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}])`
如何将访问/密钥转换为机密管理器足够理解以转换为密钥/值对的格式?
解决方案
首先,您应该重新考虑是否真的需要在 Secrets Manager 中存储 AWS 访问密钥。您打算如何获取将用于调用 Secrets Manager 的凭据?
例如,查看使用临时角色凭据- 不要使用您必须从 SecretsManager 获取另一个凭据对的凭据。使用您必须获得的信用来代替临时信用。
对于您的实际问题,您似乎正在尝试在控制台中查看秘密值(因为此时会显示错误“秘密值无法转换为键名和值对”)。您用于创建机密的 python 代码片段工作正常。当控制台无法将 SecretString 解析为键值对时会显示该错误。这是预期的行为,因为您在 SecretString 中的顶级 obj 是一个数组。
如果单击红色错误显示框正上方的“纯文本”选项卡,您将看到存储的 SecretString,而无需任何尝试解析为键值对。
推荐阅读
- python - 整数转换为时间
- angular - 在Angular中的http调用后尝试操作变量后无法读取未定义的属性(读取'forEach')
- spring-boot - Spring Cloud Gateway 路径和 ID,无法解析来自 Eureka 的服务
- flutter - appStateManager.addListener(notifyListeners); 是什么?意思是?
- flutter - 在颤动的画布上区分单指拖动和多指拖动
- javascript - 地图在对象中不是函数
- javascript - JS 功能阻止我使用@media screen 更改 div 高度
- c - 按下按钮时如何返回初始屏幕?
- automation - Ansible 在不终止进程的情况下运行任务
- python - DAG 运行已启动,但任务仍处于 no_status