本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
回调模式示例(Amazon SQS、Amazon SNS,Lambda)
此示例项目演示了如何在任务期间暂停 Amazon Step Functions,并等待外部进程返回任务启动时生成的任务令牌。
部署此示例项目并开始执行时,将执行以下步骤:
Step Functions 将包含任务令牌的消息传递到 Amazon Simple Queue Service (Amazon SQS) 队列。
然后 Step Functions 暂停,等待该令牌返回。
Amazon SQS 队列触发Amazon Lambda用于调用的函数
SendTaskSuccess
使用相同的任务令牌。收到任务令牌后,工作流程将继续。
这些区域有:
"Notify Success"
任务发布 Amazon Simple Notification Service (Amazon SNS) 消息,表明已收到回调。
要了解如何在 Step Functions 中实施回调模式,请参阅等待具有任务令牌的回调.
有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
创建状态机并预置资源
-
打开Step Functions 控件
然后选择创建状态机. -
选择 Sample Projects (示例项目),然后选择 Callback Pattern Example (回调模式示例)。
此时将显示状态机 Code (代码) 和 Visual Workflow (可视工作流程)。
-
选择 Create Sample Project (创建示例项目)。
此时将显示 Create Project Resources (创建项目资源) 页面,其中列出了将创建的资源。对于本示例项目,资源包括:
-
Amazon SQS 消息队列。
-
一个 Lambda 函数,用于调用 Step Functions API 操作
SendTaskSuccess
. -
一个 Amazon SNS 主题,用于在工作流程可以继续时通知成功或失败。
注意 创建这些资源和相关 IAM 权限可能需要长达 10 分钟的时间。当 Create Project Resources (创建项目资源) 页面显示 Creating resources (正在创建资源) 时,您可打开 Stack ID: (堆栈 ID:) 链接以查看正在预置的资源。
完成后,将会显示 New execution (新执行) 页面。
-
-
(可选)输入执行名称和示例输入。
-
选择 Start Execution (开始执行)。
此时将启动新的状态机执行,并显示一个说明正在运行的执行的新页面。
-
要查看 Step Functions 在工作流程中的进展情况及其如何从 Amazon SQS 收到回调,请查看执行事件历史.
Lambda 回调示例
要查看此示例项目的组件如何协同工作,请参阅在Amazonaccount. 例如,这是使用任务令牌调用 Step Functions 的 Lambda 函数。
console.log('Loading function'); const aws = require('aws-sdk'); exports.lambda_handler = (event, context, callback) => { const stepfunctions = new aws.StepFunctions(); for (const record of event.Records) { const messageBody = JSON.parse(record.body); const taskToken = messageBody.TaskToken; const params = { output: "\"Callback task completed successfully.\"", taskToken: taskToken }; console.log(`Calling Step Functions to complete callback task with params ${JSON.stringify(params)}`); stepfunctions.sendTaskSuccess(params, (err, data) => { if (err) { console.error(err.message); callback(err.message); return; } console.log(data); callback(null); }); } };