You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析boto3调用list_users返回的IAM用户输出JSON?

解析boto3返回的IAM用户结果

嘿,我来帮你搞定这个boto3返回结果的解析问题!首先要明确一点:boto3的list_users()方法返回的不是纯JSON字符串,而是一个Python字典(你看到的输出里带u'是Python 2的Unicode标记,Python 3里会是普通的字符串)。所以我们直接操作这个字典就行,不用先做JSON解析,当然如果需要转成标准JSON格式,我也会告诉你怎么处理。

1. 直接提取用户信息(操作Python字典)

返回的字典里,'Users'键对应一个列表,每个列表元素就是一个用户的详细信息字典。你可以遍历这个列表,提取你需要的字段,比如用户名、创建时间、ARN等:

#!/usr/bin/env python
import boto3

client = boto3.client('iam')
response = client.list_users()

# 遍历所有IAM用户
for user in response['Users']:
    print(f"用户名: {user['UserName']}")
    print(f"用户ID: {user['UserId']}")
    print(f"创建时间: {user['CreateDate']}")
    print(f"ARN: {user['Arn']}")
    print("------------------------")

运行这段代码,就能清晰看到每个用户的关键信息了。

2. 转成标准JSON格式输出

如果你需要把结果转成可存储或传输的JSON字符串,注意一个细节:返回结果里的CreateDate是datetime对象,默认的json.dumps()无法序列化这种类型,所以我们需要自定义一个JSON编码器来处理它:

#!/usr/bin/env python
import boto3
import json
from datetime import datetime

# 自定义JSON编码器,处理datetime对象
class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            # 把datetime转成ISO格式的字符串,比如"2018-04-06T12:41:18+00:00"
            return obj.isoformat()
        # 其他类型用默认处理
        return super().default(obj)

client = boto3.client('iam')
response = client.list_users()

# 转成格式化的JSON字符串
json_result = json.dumps(response, cls=DateTimeEncoder, indent=2)
print(json_result)

这样输出的就是标准的JSON格式,所有字段都能正常序列化啦。

3. 提取单个用户的信息

如果你只需要某一个特定用户的信息,可以用列表推导或者循环筛选:

# 筛选用户名为"ja"的用户
target_user = next((user for user in response['Users'] if user['UserName'] == 'ja'), None)
if target_user:
    print(f"找到目标用户: {target_user['UserName']},ARN: {target_user['Arn']}")
else:
    print("未找到该用户")

这样就能快速定位到你需要的用户信息。

内容的提问来源于stack exchange,提问作者Milister

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:44:26