需要帮助从json输出中获取特定值

时间:2019-02-13 11:42:56

标签: python python-3.x python-2.7 boto3 amazon-emr

我需要从下面的代码中获取Tag值,它首先获取ID,然后将其传递给describe_cluster,然后该值采用json格式。尝试使用“ GET”从此“ Cluster” json获取特定值。但是,它返回错误消息,因为“'str'对象没有属性'get'”,请提出建议。

这里是我指的boto3的参考链接: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/emr.html#EMR.Client.describe_cluster

import boto3
import json
from datetime import timedelta

REGION = 'us-east-1'

emrclient = boto3.client('emr', region_name=REGION)
snsclient = boto3.client('sns', region_name=REGION)

def lambda_handler(event, context):
    EMRS = emrclient.list_clusters(
    ClusterStates = ['STARTING', 'RUNNING', 'WAITING']
    )

    clusters = EMRS["Clusters"]
    for cluster_details in clusters :
        id = cluster_details.get("Id")

        describe_cluster = emrclient.describe_cluster(
            ClusterId = id
            )

        cluster_values = describe_cluster["Cluster"]

        for details in cluster_values :
            tag_values = details.get("Tags")
            print(tag_values)

1 个答案:

答案 0 :(得分:1)

错误在代码的最后一部分。

describe_cluster = emrclient.describe_cluster(
    ClusterId = id
    )

cluster_values = describe_cluster["Cluster"]

for details in cluster_values: # ERROR HERE
    tag_values = details.get("Tags")
    print(tag_values)

describe_cluster返回的值是一个字典。 Cluster也是字典。因此,您无需对其进行迭代。您可以直接访问cluster_values.get("Tags")