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

如何修复AWS Lambda提取Trust Advisor数据时的日志错误及代码问题

解决AWS Lambda提取Trust Advisor数据报错及添加Traceback日志

一、在else语句块添加Traceback日志

  1. 先在代码开头导入traceback模块:
import traceback
import boto3
# 其他必要的导入模块
  1. 修改异常捕获逻辑,确保输出完整调用栈:
    假设你的原有代码片段类似:
try:
    # 获取Trust Advisor检查数据的逻辑
    checks = support_client.describe_trusted_advisor_checks(language='en')
except Exception as e:
    print("unable to append checks")
else:
    # 处理checks并上传S3的逻辑

修改为:

try:
    # 获取Trust Advisor检查数据的逻辑
    checks = support_client.describe_trusted_advisor_checks(language='en')
except Exception as e:
    print(f"unable to append checks: {str(e)}")
    # 打印完整错误栈到Lambda日志
    print("完整错误追踪:")
    print(traceback.format_exc())
else:
    try:
        # 原else块中的处理逻辑(比如追加数据、上传S3)
        your_data_list.append(checks)
        # 上传S3的代码
        s3_client.put_object(Bucket='your-bucket', Key='trust-advisor-data.json', Body=json.dumps(your_data_list))
    except Exception as e:
        print(f"else块执行错误: {str(e)}")
        print("完整错误追踪:")
        print(traceback.format_exc())

这样不管是try块捕获的错误,还是else块内的错误,都会输出完整的traceback,帮你定位具体代码行的问题。

二、排查“unable to append checks”错误的常见方向

  • IAM权限缺失:Lambda执行角色必须包含以下权限:
    • support:DescribeTrustedAdvisorChecks
    • support:DescribeTrustedAdvisorCheckResult
    • s3:PutObject(如果要上传S3)
      检查角色的权限策略,确保这些权限被正确添加。
  • Trust Advisor API区域限制:该API仅支持us-east-1区域,初始化客户端时必须指定:
support_client = boto3.client('support', region_name='us-east-1')
  • API调用限流:AWS Support API有调用频率限制,短时间内多次触发Lambda会触发限流,日志中会出现Throttling相关提示。
  • 数据格式问题:如果尝试append的对象不是列表类型,或者checks返回的数据格式不符合预期(比如返回None、非可迭代对象),会导致append操作失败。可以在代码中添加打印语句,查看checks的实际结构:
print(f"Checks数据结构: {type(checks)}, 内容: {checks}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:01:24