我需要从下面的代码中获取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)
答案 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")