python - 如何从 JSON Lambda 输出中提取一个值?
问题描述
我正在学习 python 和 JSON 库,并试图找出如何从这个 JSON 响应中提取特定的键/值。我正在使用 AWS Lambda,输出与 JSON 不完全一样,因为它内部有 "\。我不确定如何从那里提取一个值。
有什么想法可以在这里获得 releaseVersion 值吗?谢谢!
代码片段:
import json
import boto3
client = boto3.client('eks')
def lambda_handler(event, context):
response = client.describe_nodegroup(
clusterName='eks-cluster',
nodegroupName='Eks-Node-1'
)
return json.dumps(response, default=str)
输出:
"{\"ResponseMetadata\": {\"RequestId\": \"xxxxxx\", \"HTTPStatusCode\": 200, \"HTTPHeaders\": {\"date\": \"Sun, 20 Jun 2021 03:00:28 GMT\", \"content-type\": \"application/json\", \"content-length\": \"1294\", \"connection\": \"keep-alive\", \"x-amzn-requestid\": \"c1e99860-22df-4b9e-aa6c-ffbc3c7690f7\", \"access-control-allow-origin\": \"*\", \"access-control-allow-headers\": \"*,Authorization,Date,X-Amz-Date,X-Amz-Security-Token,X-Amz-Target,content-type,x-amz-content-sha256,x-amz-user-agent,x-amzn-platform-id,x-amzn-trace-id\",
\"x-amz-apigw-id\": \"BNBT7F0mCYcFRzg=\", \"access-control-allow-methods\": \"GET,HEAD,PUT,POST,DELETE,OPTIONS\", \"access-control-expose-headers\": \"x-amzn-errortype,x-amzn-errormessage,x-amzn-trace-id,x-amzn-requestid,x-amz-apigw-id,date\", \"x-amzn-trace-id\": \"Root=1-60ceaf4c-5e181ebd4bdd49bd77c982b8\"}, \"RetryAttempts\": 0}, \"nodegroup\":
{\"nodegroupName\": \"Eks-Node-1\", \"nodegroupArn\": \"arn:aws:eks:us-east-2:xxxxxx:nodegroup/eks-cluster/Eks-Node-1/cebd1393-ca31-cd8f-6d28-9bdd22617dcd\", \"clusterName\": \"eks-cluster\", \"version\": \"1.18\", \"releaseVersion\": \"1.18.9-20210526\", \"createdAt\": \"2021-06-20 02:02:23.899000+00:00\", \"modifiedAt\": \"2021-06-20 02:52:31.397000+00:00\", \"status\": \"ACTIVE\", \"capacityType\":
\"SPOT\", \"scalingConfig\": {\"minSize\": 2, \"maxSize\": 2, \"desiredSize\": 2}, \"instanceTypes\": [\"t3.micro\"], \"subnets\": [\"subnet-5b0dec30\", \"subnet-dff27493\", \"subnet-fbca9581\"], \"remoteAccess\": {\"ec2SshKey\": \"ssht\"}, \"amiType\": \"AL2_x86_64\", \"nodeRole\":
\"arn:aws:iam::xxxxxxxx:role/EKS-NodeGroups-Role\", \"labels\": {}, \"resources\": {\"autoScalingGroups\": [{\"name\":
\
"eks-cebd139xxxxxxdd22617dcd\"}], \"remoteAccessSecurityGroup\": \"sg-0810575351f982840\"}, \"diskSize\": 4, \"health\": {\"issues\": []}, \"tags\": {}}}"
解决方案
该response
变量应包含 Python 字典对象中的数据。
boto3 文档describe_nodegroup()
将输出显示为:
{
'nodegroup': {
'nodegroupName': 'string',
'nodegroupArn': 'string',
'clusterName': 'string',
'version': 'string',
'releaseVersion': 'string',
...
},
...
}
}
因此,您应该能够使用:return response['nodegroup']['releaseVersion']
推荐阅读
- python - 尝试使用 Pipieline 和 GridSearch 运行 RandomForestClassifier 时出错
- javascript - 将元素名称作为字符串变量反应
- android - Android 应用程序错误:未找到 Kotlin 类,但仅在 Release apk 上
- javascript - 当页面标题在 sidenav 内容中不可见时,在工具栏中显示文本
- html - 单击 HTML 按钮 URL 字符串?
- django - Django:检索多对多关系的值
- python - 如何将带有可变参数的多个 PyQt 信号连接到单个插槽/信号中继器
- python - 在同一个字典中查找两个值的平均值
- go - 使用 Istio grpc-web 代理的 CORS 预检上的 golang gRPC 503
- python - 有没有办法让地图对象重复?