Я пытаюсь разобрать ответ JSON
на вызов boto3
describe_isntances()
.Ответ представляет собой словарь в списке.Я не получаю вывод, который я ожидаю.Мне нужно разобрать словарь для Value
из Key
, когда Key
равно email
.Мне также нужно напечатать предупреждение, если эта пара ключ / значение не существует в ответе.На данный момент я застрял.Ниже приведен мой код, пример JSON
, ожидаемый вывод и вывод:
CODE:
import boto3
import json
conn = boto3.resource('ec2')
client = boto3.client('ec2')
instances = conn.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
for instances in instances:
host_ids = instances.id
email_tag = client.describe_tags(Filters=[{'Name': 'resource-id','Values': [host_ids,]}])
for item in email_tag['Tags']:
if item['Key'] == 'email':
tag_value = item['Value']
else:
tag_value = print("Tag not found!")
print(host_ids,tag_value)
JSON:
{'Tags': [{'Key': 'AZ', 'ResourceId': 'i-xxxxxxx',
'ResourceType': 'instance', 'Value': '2'}, {'Key': 'KubeClusterId',
'ResourceId': 'i-xxxxxxxx', 'ResourceType': 'instance',
'Value': 'bug-fix'}, {'Key': 'NodeNum',
'ResourceId': 'i-xxxxxxxxx', 'ResourceType': 'instance',
'Value': '1'}, {'Key': 'KubeType', 'ResourceId': 'i-xxxxxx',
'ResourceType': 'instance', 'Value': 'Node'}, {'Key': 'Name',
'ResourceId': 'i-xxxxxxx', 'ResourceType': 'instance',
'Value': 'bug-fix'}, {'Key': 'Tier', 'ResourceId':
'i-xxxxxxx', 'ResourceType': 'instance', 'Value':
'internal'}, {'Key': 'application_name', 'ResourceId': 'i-xxxxxx', 'ResourceType': 'instance', 'Value': 'bz'},
{'Key': 'cost_center', 'ResourceId': 'i-xxxxxxxx',
'ResourceType': 'instance', 'Value': 'xxxx'}, {'Key': 'email',
'ResourceId': 'i-xxxxxxxx', 'ResourceType': 'instance',
'Value': 'foo@bar.com'}, {'Key': 'environment',
'ResourceId': 'i-xxxxxx', 'ResourceType': 'instance',
'Value': 'test'}, {'Key': 'initiative_number', 'ResourceId': 'i-xxxxxx', 'ResourceType': 'instance', 'Value': 'inxxxxx'},
{'Key': 'kube_env', 'ResourceId': 'i-xxxxxxxx',
'ResourceType': 'instance', 'Value': 'bug-fix'}, {'Key':
'portfolio', 'ResourceId': 'xxxxxx', 'ResourceType':
'instance', 'Value': 'px'}, {'Key': 'utan', 'ResourceId': 'i-xxxxxx', 'ResourceType': 'instance', 'Value':
'blazewater'}], 'ResponseMetadata': {'RequestId': 'dhdhdhdhdhdhd', 'HTTPStatusCode': 200, 'HTTPHeaders': {'content-
type': 'text/xml;charset=UTF-8', 'content-length': '3171', 'vary':
'Accept-Encoding', 'date': 'Tue, 04 Dec', 'server':
'AmazonEC2'}, 'RetryAttempts': 0}}
EXPECTED OUTPUT:
i-xxxxxx foo@bar.com
или
i-xxxxxx Tag not found!
OUTPUT:
i-xxxxxx None
или
Tag not found!