Нужна помощь в извлечении определенного значения из вывода json - PullRequest
0 голосов
/ 13 февраля 2019

Мне нужно получить значения тегов из приведенного ниже кода, он сначала выбирает Id, а затем передает его в description_cluster, тогда значение находится в формате json.Попытка получить определенное значение из этого jlus-кластера, используя "GET".Тем не менее, он возвращает сообщение об ошибке, поскольку «объект« 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 голосов
/ 13 февраля 2019

Ошибка находится в последней части кода.

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)

Возвращаемое значение description_cluster - это словарь.Cluster также является словарем.Так что вам не нужно перебирать его.Вы можете получить прямой доступ cluster_values.get("Tags")

...