本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
启动工作流程中的工作流程(Step Functions、Lambda)
此示例项目演示如何使用 Amazon Step Functions 状态机启动其他状态机执行。请参阅从任务状态启动工作流程执行。
创建状态机并预置资源
-
打开Step Functions 控制
然后选择创建状态机. -
选择 Sample Projects (示例项目),然后选择 Start a Workflow Within a Workflow (启动工作流程中的工作流程)。
此时将显示状态机 Code (代码) 和 Visual Workflow (可视工作流程)。
-
选择 Next (下一步)。
此时将显示 Deploy resources (部署资源) 页面,其中列出了将创建的资源。对于本示例项目,资源包括:
-
Step Functions 状态机
-
回调的 Lambda 函数
-
-
选择 Deploy Resources (部署资源)。
注意 创建这些资源和相关 IAM 权限可能需要长达 10 分钟的时间。当显示 Deploy resources (部署资源) 页面时,您可打开 Stack ID (堆栈 ID) 链接以查看正在预置的资源。
启动新的执行
-
在 New execution 页面上,输入执行名称 (可选),然后选择 Start Execution (开始执行)。
(可选)要识别您的执行,您可以在名称。默认情况下,Step Functions 会自动生成唯一的执行名称。
注意 Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊CloudWatch. 为了确保你可以跟踪CloudWatch指标,请选择仅使用 ASCII 字符的名称。
-
(可选)您可以转到 Step Functions 上新创建的状态机。控制面板选择,然后选择新的执行.
-
执行完成后,您可以在 Visual workflow (可视工作流) 上选择状态,并浏览 Step details (步骤详细信息) 下的 Input (输入) 和 Output (输出)。
示例状态机代码
此示例项目中的状态机通过将参数直接传递给这些资源来将其他状态机与 Amazon Lambda 集成。
浏览此示例状态机以了解 Step Functions 如何调用StartExecution
另一个状态机的 API 操作。它并行启动该其他状态机的两个实例:使用 运行作业 (.sync) 模式启动一个实例,使用 等待具有任务令牌的回调 模式启动另一个实例。
有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
{
"Comment": "An example of combining workflows using a Step Functions StartExecution task state with various integration patterns.",
"StartAt": "Start new workflow and continue",
"States": {
"Start new workflow and continue": {
"Comment": "Start an execution of another Step Functions state machine and continue",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": false,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
}
},
"Next": "Start in parallel"
},
"Start in parallel": {
"Comment": "Start two executions of the same state machine in parallel",
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "Start new workflow and wait for completion",
"States": {
"Start new workflow and wait for completion": {
"Comment": "Start an execution of the same 'NestingPatternAnotherStateMachine' and wait for its completion",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution.sync",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": false,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
}
},
"OutputPath": "$.Output",
"End": true
}
}
},
{
"StartAt": "Start new workflow and wait for callback",
"States": {
"Start new workflow and wait for callback": {
"Comment": "Start an execution and wait for it to call back with a task token",
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution.waitForTaskToken",
"Parameters": {
"StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:NestingPatternAnotherStateMachine-HZ9gtgspmdun",
"Input": {
"NeedCallback": true,
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id",
"TaskToken.$": "$$.Task.Token"
}
},
"End": true
}
}
}
]
}
}
}
有关将 Step Functions 与其他一起使用 Step Functions 时如何配置 IAMAmazon服务,请参阅集成服务的 IAM 政策.