Amazon web services 状态机任务卡在“中”;“运行”;调用SNS主题后的状态
我有一个step函数,可以发布到SNS主题,然后发送电子邮件通知。电子邮件通知按预期发送,但当任务应该退出并终止step函数时,任务会陷入“运行”状态。有人知道我哪里出了问题,或者是什么原因导致了这一切吗Amazon web services 状态机任务卡在“中”;“运行”;调用SNS主题后的状态,amazon-web-services,amazon-sns,aws-step-functions,Amazon Web Services,Amazon Sns,Aws Step Functions,我有一个step函数,可以发布到SNS主题,然后发送电子邮件通知。电子邮件通知按预期发送,但当任务应该退出并终止step函数时,任务会陷入“运行”状态。有人知道我哪里出了问题,或者是什么原因导致了这一切吗 "ErrorNotification": { "Type": "Task", "Resource":"arn:aws:states:::sns:publish.waitForTaskToken&q
"ErrorNotification": {
"Type": "Task",
"Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
"OutputPath": "$",
"Parameters": {
"TopicArn": "<topic-arn>",
"Message":{
"Input.$":"$",
"TaskToken.$":"$$.Task.Token"
}
},
"End": true
},
“错误通知”:{
“类型”:“任务”,
“资源”:“arn:aws:states:::sns:publish.waitForTaskToken”,
“OutputPath”:“$”,
“参数”:{
“主题词”:“主题词”,
“电文”:{
“输入.$”:“$”,
“任务令牌.$”:“$$.Task.Token”
}
},
“结束”:正确
},
此特定行
“资源”:“arn:aws:states:::sns:publish.waitForTaskToken”
实施
下面包含一个任务状态,该状态发布到Amazon SNS主题,然后等待返回任务令牌。请参阅使用任务标记等待回调
{
“StartAt”:“向SNS发送消息”,
“国家”:{
“向SNS发送消息”:{
“类型”:“任务”,
“资源”:“arn:aws:states:::sns:publish.waitForTaskToken”,
“参数”:{
“TopicArn”:“arn:aws:sns:us-east-1:123456789012:myTopic”,
“电文”:{
“输入.$”:“$”,
“任务令牌.$”:“$$.Task.Token”
}
},
“结束”:正确
}
}
}
在这种情况下,您需要检查是否正在从处理回调并返回最终响应的(通常是lambda)发送适当的事件
例如,对于成功
或失败
,我通过lambda处理回调功能,大致如下
...
info(f“发送任务ID{body['taskToken']}的任务检测信号”)
步骤\功能\客户端。发送\任务\心跳信号(taskToken=body[“taskToken”])
is\u task\u success=random.choice([True,False])
如果任务成功:
LOG.info(f“为任务ID{body['taskToken']}发送任务成功”)
步骤\u功能\u客户端。发送\u任务\u成功(
taskToken=body[“taskToken”],
output=json.dumps({“id”:body['id']})
)
其他:
LOG.info(f“发送任务ID{body['taskToken']}的任务失败”)
步骤\功能\客户端。发送\任务\失败(
taskToken=body[“taskToken”],
cause=“随机选择返回False。”
)
..
感谢您抽出时间为我澄清这一点。对于我的用例,我实际上不需要处理回调,所以我只是在我的step函数任务中将它改为“资源”:“arn:aws:states:::sns:publish”。@MountainBiker很高兴它成功了。干杯