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
相关产品推荐
相关产品推荐

