活动 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

活动

活动是一项Amazon Step Functions功能,使您能够在状态机中执行任务,该任务由工作程序执行,该工作程序可以托管在亚马逊弹性计算云 (Amazon EC2)、亚马逊弹性容器服务 (Amazon ECS)、移动设备上,基本上可以在任何地方托管。

概览

在 Amazon Step Functions 中,可以将正在某处运行的代码(称为活动工作线程)与状态机中的特定任务关联起来。您可以使用 Step Functions 控制台或通过调用来创建活动CreateActivity。这为您的任务状态提供了亚马逊资源名称 (ARN)。使用此 ARN 可以轮询活动工作线程中的工作的任务状态。

注意

活动没有版本控制,并应向后兼容。如果您必须对活动进行向后不兼容的更改,请使用唯一名称在 Step Func tions 中创建一个新活动。

活动工作程序可以是在 Amazon EC2 实例上运行的应用程序、Amazon Lambda函数、移动设备:任何可以建立 HTTP 连接的应用程序,托管在任何地方。当 Step Functions 达到活动任务状态时,工作流会等待活动工作人员轮询任务。活动工作人员通过使用GetActivityTask和发送相关活动的 ARN 来轮询 Step Functions。 GetActivityTask返回包含input(任务的 JSON 输入字符串)和 taskToken(任务的唯一标识符)的响应。活动工作线程完成其工作后,可以使用 SendTaskSuccessSendTaskFailure 提供成功或失败报告。这两个调用使用 GetActivityTask 提供的 taskToken 将结果与该任务关联起来。

与活动任务相关的 API

Step Functions 提供 API,用于创建和列出活动、请求任务以及根据工作线程的结果管理状态机流程。

以下是与活动相关的 Step Functions API:

注意

在某些实现中,通过 GetActivityTask 轮询活动任务可能会导致延迟。请参阅在轮询活动任务时避免延迟

等待完成活动任务

通过在任务定义中设置 TimeoutSeconds 配置状态等待时长 要使任务保持为活动和等待状态,请在 TimeoutSeconds 中配置的时间内,定期使用 SendTaskHeartbeat 从活动工作线程发送检测信号。通过配置较长的超时时间并主动发送心跳,Step Functions 中的活动最多可以等待一年的时间才能完成执行。

例如,如果需要工作流程等待长时间进程的结果,请执行以下操作:

  1. 使用控制台或者使用 CreateActivity 创建活动。记下活动 ARN。

  2. 在状态机定义中的活动任务状态中引用该 ARN 并设置 TimeoutSeconds

  3. 使用 GetActivityTask 并引用该活动 ARN 实现用于轮询工作的活动工作线程。

  4. 在状态机任务定义的 HeartbeatSeconds 所设置的时间内,定期使用 SendTaskHeartbeat,以防止任务超时。

  5. 启动状态机执行。

  6. 启动活动工作进程。

执行在相应活动任务状态时暂停,等待活动工作线程轮询任务。一旦 taskToken 提供给活动工作线程,工作流程将等待 SendTaskSuccessSendTaskFailure 提供状态。如果执行在 TimeoutSeconds 中配置的时间之前未收到上述任一状态或 SendTaskHeartbeat 调用,则执行将失败,执行历史记录将包含 ExecutionTimedOut 事件。

后续步骤

要更详细地了解如何创建使用活动工作线程的状态机,请参阅: