我有一个python
脚本,可提取我拥有的所有AWS账户中的所有EC2
实例ID和标签。我试图解析一个键的一个值。具体来说,我只想从响应中解析Value
Key
的{{1}},但是却收到错误:email
。以下是我的代码和list indices must be integers or slices, not str
响应。
json
Code:
import boto3
import json
conn = boto3.resource('ec2',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=session_token)
instances = conn.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
for instance in instances:
host_list = instance.id
host_tags = instance.tags
print(host_tags['Key']['email']['Value'])
Sample JSON:
[{
'Key': 'gitlab',
'Value': 'true'
}, {
'Key': 'portfolio',
'Value': 'xxx'
}, {
'Key': 'runner-manager-name',
'Value': 'xxxxxx'
}, ...
]
Error:
答案 0 :(得分:3)
您的问题出在线路上
host_tags = instance.tags
print(host_tags['Key']['email']['Value'])
像这样重写它:
host_tags = instance.tags
for tag in host_tags:
print('Key: ' + tag['Key'] + ' Value: ' + tag['Value'])
instance.tags
是字典的数组。您需要处理数组中的每个项目(标签)。然后,您需要处理字典以提取其键/值对。