Python Boto3分页AWS Workspaces失败:脚本仅输出'uh oh'
问题修复:AWS Workspaces分页遍历脚本错误
你的脚本存在几个关键问题,导致无法正常遍历所有实例且触发错误输出:
- 语法错误:
except = None是错误写法,Python的异常捕获不能这么定义;print(uh oh)未给字符串加引号,会触发NameError - 分页结果遍历错误:
describe_workspaces的分页返回是包含Workspaces键的字典,直接遍历字典只会拿到键名,而非工作区数据 - 字段提取错误:
["WorkspaceId"]是创建新列表,不是读取workspaceInfo中的对应值;且AWS返回的状态字段是State(首字母大写),不是state - 缩进错误:内层
for循环后的代码未缩进,违反Python语法规则 - 结果输出被注释:你把
print(final_detail)注释掉了,即便逻辑正确也看不到结果
以下是修正后的完整脚本:
from pprint import pprint import boto3 # 显式导入boto3,Lambda环境虽默认包含,但规范写法建议添加 client = boto3.client('workspaces') final_detail = [] # 表头与AWS返回字段名对应,注意大小写 final_detail.append(['ComputerName', 'WorkspaceId', 'IpAddress', 'State', 'UserName', 'BundleId', 'WorkspaceProperties']) paginator = client.get_paginator('describe_workspaces') try: # 遍历分页结果,每次取Workspaces列表 for page in paginator.paginate(): # 遍历当前页的所有工作区实例 for workspaceInfo in page['Workspaces']: # 正确提取字段值,用get()处理可能不存在的字段,避免KeyError each_detail = ( workspaceInfo.get("ComputerName", "N/A"), workspaceInfo["WorkspaceId"], workspaceInfo.get("IpAddress", "N/A"), workspaceInfo["State"], workspaceInfo.get("UserName", "N/A"), workspaceInfo["BundleId"], workspaceInfo["WorkspaceProperties"] ) final_detail.append(each_detail) # 打印最终结果 pprint(final_detail) except Exception as e: # 捕获异常并输出错误详情,方便调试 print(f"uh oh: {str(e)}")
关键修正说明:
- 补全
boto3导入,保证代码可独立运行 - 调整分页遍历逻辑,通过
page['Workspaces']获取真实的工作区数据列表 - 修正字段提取方式,对可选字段用
get()设置默认值,避免报错 - 修正
State字段的大小写,匹配AWS API返回格式 - 修复异常捕获语法,同时输出错误信息便于排查问题
- 取消结果输出的注释,确保能看到遍历后的完整数据
修改后脚本可正确遍历所有200+个Workspaces实例,不会再出现分页遗漏或无意义的错误输出。
内容的提问来源于stack exchange,提问作者mindcoder
相关产品推荐
相关产品推荐

