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

Python自定义异常在AWS Step Functions中的重试配置方法

让AWS Step Functions重试Python Lambda的自定义异常

要实现Step Functions针对Lambda抛出的自定义异常执行重试,核心是让Step Functions的ErrorEquals字段匹配Lambda返回的errorType值,具体操作如下:

1. 正确定义并抛出自定义异常

在Python Lambda中先明确自定义异常类的定义,确保抛出的是该类的实例:

# 定义自定义异常
class MYEXCEPTION(Exception):
    pass

def lambda_handler(event, context):
    try:
        # 执行业务任务
        sometask()
    except Exception as e:
        # 抛出自定义异常
        raise MYEXCEPTION(f"my custom exception: {e}")

当Lambda抛出这个异常时,AWS会自动将其序列化为包含errorType和errorMessage的JSON响应,其中errorType的值就是你的异常类名称(如MYEXCEPTION)。

2. 配置Step Functions的重试规则

在Step Functions状态机的重试块中,直接将ErrorEquals设置为自定义异常类名称即可:

"Retry": [
  {
    "ErrorEquals": ["MYEXCEPTION"],
    "IntervalSeconds": 2,
    "MaxAttempts": 3,
    "BackoffRate": 2.0
  }
]

注意事项

  • 大小写敏感:ErrorEquals中的异常名称必须和Lambda中定义的类名完全一致(包括大小写)。
  • 模块路径:如果自定义异常是在模块或Lambda层中定义的(比如my_exceptions.MYEXCEPTION),需要在ErrorEquals中填写完整类路径,示例:
    "ErrorEquals": ["my_exceptions.MYEXCEPTION"]
    
  • 避免异常包装:确保Lambda抛出的是自定义异常本身,不要被其他异常(如RuntimeError)包装,否则errorType会变成包装类名称,导致Step Functions无法匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:15:40