AWS Python Lambda:如何为步骤函数引发异常
我的AWS步骤函数有以下流程,Python lambda应该如何引发MyCustomError 只需使用AWS Python Lambda:如何为步骤函数引发异常,python,amazon-web-services,aws-lambda,aws-step-functions,Python,Amazon Web Services,Aws Lambda,Aws Step Functions,我的AWS步骤函数有以下流程,Python lambda应该如何引发MyCustomError 只需使用引发异常(“MyCustomError”)?还是我需要做点别的?官方文档使用node.js作为示例,我没有看到任何Python示例 { "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function", "Sta
引发异常(“MyCustomError”)
?还是我需要做点别的?官方文档使用node.js作为示例,我没有看到任何Python示例
{
"Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction",
"Retry": [ {
"ErrorEquals": ["MyCustomError"],
"IntervalSeconds": 1,
"MaxAttempts": 2,
"BackoffRate": 2.0
} ],
"End": true
}
}
}
当我需要捕获并重试我们所做的API调用时,我做了类似的事情。在第一次连接到Aurora Serverless时,可能需要30秒左右的时间来启动集群。所以,如果我们得到一个超时,我只想抛出一个异常,步骤函数将重试 Step函数状态如下所示,与标准Lambda异常不同,我的自定义异常等待时间不同:
"Hello World": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction"
"Retry": [
{
"ErrorEquals": [
"Lambda.ServiceException",
"Lambda.AWSLambdaException",
"Lambda.SdkClientException"
],
"IntervalSeconds": 2,
"MaxAttempts": 6,
"BackoffRate": 2
},
{
"ErrorEquals": [
"QueryAPIUnavailableException"
],
"IntervalSeconds": 30,
"MaxAttempts": 5,
"BackoffRate": 2
}
],
"End": true
}
然后Lambda本身只是对一个异常子类进行提升,这个异常子类只不过是一个过程
:
class QueryAPIUnavailableException(Exception): pass
def lambda_handler(event, context):
message = my_query_api.get_message()
if (message == 'Endpoint request timed out'):
logger.info("Query API timed out, throwing exception for Step Function retry")
raise QueryAPIUnavailableException(message)
else:
print(f"Got back message: {message}")
猜测一下,将
MyCustomError
定义为Exception
的子类,然后raisemycustomerror()
。