在阈值时间范围内未启动步骤时的 Sns 邮件通知
Sns mail notification when a step is not kicked off within a threshold timeframe
我有一个通过step函数提交的emr步骤。在步骤 运行 中,我可以看到任务已提交,但 emr 步骤未执行且 emr 控制台没有任何信息。
- 我该如何调试它?
- 当步骤未在阈值时间范围内开始执行时,如何发送 sns?在我的例子中,步骤函数显示已提交 emr 任务,但 emr 控制台和管道上没有信息很长 运行ning没有失败超过半小时
您可以通过Step Functions执行日志开始调试过程,找出失败的具体步骤,稍后,您可以继续寻找对于 EMR 控制台或失败的特定服务。通常当 EMR 步骤没有出现在 EMR 控制台中时,是由于调用 EMR 步骤时引发的异常引起的运行时错误。
对于这种情况,您可以使用 Step Functions 的错误处理,使用 Catch
和 Timeout
字段,您可以在 AWS 文档中找到更多详细信息 here.
基本上你需要添加这个字段如下所示:
{
"StartAt": "EmrStep",
"States": {
"EmrStep": {
"Type": "Task",
"Resource": "arn:aws:emr:execute-X-step",
"Comment": "This is your EMR step",
"TimeoutSeconds": 10,
"Catch": [ {
"ErrorEquals": ["States.Timeout"],
"Next": "ShutdownClusterAndSendSNS"
} ],
"End": true
},
"ShutdownClusterAndSendSNS": {
"Type": "Pass",
"Comment": "This step handles the timeout exception raised",
"Result": "You can shutdown the EMR cluster to avoid increased cost here and later send a sns notification!",
"End": true
}
}
注意:要捕获超时异常,你必须捕获错误States.Timeout
,但你也可以为其他类型的错误定义相同的捕获字段。
我有一个通过step函数提交的emr步骤。在步骤 运行 中,我可以看到任务已提交,但 emr 步骤未执行且 emr 控制台没有任何信息。
- 我该如何调试它?
- 当步骤未在阈值时间范围内开始执行时,如何发送 sns?在我的例子中,步骤函数显示已提交 emr 任务,但 emr 控制台和管道上没有信息很长 运行ning没有失败超过半小时
您可以通过Step Functions执行日志开始调试过程,找出失败的具体步骤,稍后,您可以继续寻找对于 EMR 控制台或失败的特定服务。通常当 EMR 步骤没有出现在 EMR 控制台中时,是由于调用 EMR 步骤时引发的异常引起的运行时错误。
对于这种情况,您可以使用 Step Functions 的错误处理,使用
Catch
和Timeout
字段,您可以在 AWS 文档中找到更多详细信息 here. 基本上你需要添加这个字段如下所示:
{
"StartAt": "EmrStep",
"States": {
"EmrStep": {
"Type": "Task",
"Resource": "arn:aws:emr:execute-X-step",
"Comment": "This is your EMR step",
"TimeoutSeconds": 10,
"Catch": [ {
"ErrorEquals": ["States.Timeout"],
"Next": "ShutdownClusterAndSendSNS"
} ],
"End": true
},
"ShutdownClusterAndSendSNS": {
"Type": "Pass",
"Comment": "This step handles the timeout exception raised",
"Result": "You can shutdown the EMR cluster to avoid increased cost here and later send a sns notification!",
"End": true
}
}
注意:要捕获超时异常,你必须捕获错误States.Timeout
,但你也可以为其他类型的错误定义相同的捕获字段。