首页 > 解决方案 > 无法获取 json 键值

问题描述

我在下面有一个 python 代码来获取 json 键值,但我在下面。

import json
import datetime
import dateutil
import time
import os

secret = os.system("aws secretsmanager get-secret-value --secret-id stage_secret --query SecretString --output text")
print(secret)
data = (secret["username"])
print(data)

的输出secret{"username":"user1","password":"psswd@123"}

我想提取 and 的值username并将password其存储在一个变量中,但是我遇到了错误

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    data = (secret["username"])
TypeError: 'int' object has no attribute '__getitem__'

请帮助实现相同的目标

Python Version Python 2.7.5

标签: pythonamazon-web-servicesaws-cli

解决方案


秘密的输出是......

不,不是。如果您参考os.system()文档,结果是命令的退出代码,它是一个 int。

如果要捕获输出,请使用subprocess模块

import subprocess
import json

secret_id = "stage_secret"  # do NOT store this in your source code 
output_mode = "text"
output = subprocess.check_output(["aws", "secretsmanager" , "get-secret-value", "--secret-id", secret_id, "--query", "SecretString", "--output", output_mode])

data = json.loads(output.strip())
print(data['username'])

但是,你真的应该考虑使用boto3


推荐阅读