新手问题。我希望能够做到以下几点:
import boto
from boto.iam.connection import IAMConnection
cfn = IAMConnection()
cfn.get_all_users()
for user in userList:
print user.user_id
连接正常,但最后一行返回错误“'unicode'对象没有属性'user_id'”。
我做了一个type(userList)
并且它将类型报告为< class'boto.jsonresponse.Element'>,它没有出现(?)来记录。使用普通的JSON解析似乎也不起作用。
从another source开始,看起来意图是这样的操作的结果应该是“pythonized”。
无论如何,我对boto很新,所以我假设有一些简单的方法可以做到这一点,我只是没有偶然发现。
THX!
答案 0 :(得分:2)
对于某些较旧的AWS服务,boto从服务中获取XML响应并将其转换为漂亮的Python对象。对于其他人,它需要XML响应并将其直接转换为本机Python数据结构。 boto.iam
模块属于后一种形式。因此,get_all_users()
返回的实际数据如下所示:
{u'list_users_response':
{u'response_metadata': {u'request_id': u'8d694cbd-93ec-11e3-8276-993b3edf6dba'},
u'list_users_result': {u'users':
[{u'path': u'/', u'create_date': u'2014-01-21T17:19:45Z', u'user_id':
u'<userid>', u'arn': u'<arn>', u'user_name': u'foo'},
{...next user...}
]
}
}
所以,你想要的所有数据都在那里,它有点难以找到。返回的boto.jsonresponse.Element
对象会给你一些帮助。你实际上可以这样做:
data = cfn.get_all_users()
for user in data.user:
print(user['user_name'])
但是在大多数情况下,您只需要在返回的数据中挖掘以找到您要查找的内容。