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

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)}")

关键修正说明:

  1. 补全boto3导入,保证代码可独立运行
  2. 调整分页遍历逻辑,通过page['Workspaces']获取真实的工作区数据列表
  3. 修正字段提取方式,对可选字段用get()设置默认值,避免报错
  4. 修正State字段的大小写,匹配AWS API返回格式
  5. 修复异常捕获语法,同时输出错误信息便于排查问题
  6. 取消结果输出的注释,确保能看到遍历后的完整数据

修改后脚本可正确遍历所有200+个Workspaces实例,不会再出现分页遗漏或无意义的错误输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:06:25