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

AWS Step Functions DescribeExecution在Lambda中不返回错误/原因的问题

Step Functions DescribeExecution在Lambda中缺失Error/Cause字段的排查方案
  • 确认Lambda角色权限的完整性
    虽然你已经配置了states:DescribeExecution权限,但要检查策略的细节:

    • 确保策略的Resource是*或者包含目标Step Function执行的完整ARN,避免资源范围限制导致权限不足
    • 排查策略是否附加了Condition限制(比如SourceIp、StringEquals等),Lambda执行环境的IP如果不满足条件,会导致权限生效异常
      可以通过CLI直接查看角色的权限策略验证:
    aws iam get-role-policy --role-name <lambda-role-name> --policy-name <policy-name>
    
  • 检查AWS SDK版本兼容性
    不同版本的AWS SDK对Step Functions API的返回字段处理可能存在差异:

    • 比如Python的boto3旧版本(低于1.18.0)可能无法正确解析失败执行的Error和Cause字段;JavaScript SDK v2和v3的响应结构也有区别
      可以在Lambda代码中打印当前SDK版本,比如Python中:
    import boto3
    print(boto3.__version__)
    

    如果版本过低,通过Lambda层更新或打包时使用最新版本的SDK包即可解决

  • 验证代码中的响应处理逻辑
    排查是否在代码中遗漏了对Error和Cause字段的读取:

    • 检查是否只提取了部分响应字段(比如只取status、startDate),而非完整响应对象
    • 确认序列化响应时(比如转为JSON)是否不小心过滤了这两个字段
      可以在代码中打印完整的DescribeExecution响应,直接确认字段是否存在:
    import boto3
    sfn = boto3.client('stepfunctions')
    response = sfn.describe_execution(executionArn='<your-execution-arn>')
    print(response)  # 打印完整响应,检查Error和Cause字段
    
  • 确认执行状态的同步性
    虽然控制台和CLI能获取到错误信息,但Lambda调用时可能存在极短的状态同步延迟。可以在代码中先判断执行状态,确认是FAILED后再读取错误字段:

    if response['status'] == 'FAILED':
        error = response.get('Error')
        cause = response.get('Cause')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:15:40