配置WAIT_FOR_TASK_TOKEN后仍提示Task Token缺失的问题求助
问题排查与修复
错误原因分析
你遇到的问题有两个核心原因:
- 任务令牌引用方式错误:使用
WAIT_FOR_TASK_TOKEN集成模式时,CDK要求必须通过JsonPath.taskToken()方法传递任务令牌,而非直接写原始JSONPath表达式"$$.Task.Token",否则CDK的验证逻辑无法识别令牌已正确配置。 .next()方法调用语法错误:.next()方法只需传入下一个状态节点,不需要额外传递self和definition参数,你的写法混淆了状态构造和状态流转的语法。
修正后的代码
from aws_cdk import ( aws_stepfunctions as sfn, aws_stepfunctions_tasks as tasks, aws_lambda as _lambda, Stack ) # 假设hello_function已正确定义 class YourStack(Stack): def __init__(self, scope, construct_id, **kwargs): super().__init__(scope, construct_id, **kwargs) state_machine = sfn.StateMachine( self, "MyStateMachine", definition=tasks.LambdaInvoke( self, "MyLambdaTask", lambda_function=hello_function, integration_pattern=tasks.IntegrationPattern.WAIT_FOR_TASK_TOKEN, payload={ "payload.$": "$", "execution_id.$": "$$.Execution.Id", "taskToken": sfn.JsonPath.taskToken() # 使用JsonPath.taskToken()传递令牌 } ).next( tasks.LambdaInvoke( # .next()直接传入下一个任务节点 self, "MyLambdaTask2", lambda_function=hello_function, integration_pattern=tasks.IntegrationPattern.WAIT_FOR_TASK_TOKEN, payload={ "payload.$": "$", "execution_id.$": "$$.Execution.Id", "taskToken": sfn.JsonPath.taskToken() # 同样修改此处 } ) ) )
关键修改说明
- 任务令牌传递:将
"taskToken.$": "$$.Task.Token"替换为"taskToken": sfn.JsonPath.taskToken(),这会让CDK自动生成正确的令牌引用,并通过内部验证逻辑。 - 状态流转语法:
.next()方法直接接收下一个状态对象(第二个LambdaInvoke实例),无需额外的self和definition参数,这是Step Functions状态链的标准写法。
内容的提问来源于stack exchange,提问作者TNN
相关产品推荐
相关产品推荐

