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

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

Activities

活动是Amazon Step Functions功能,该功能使您能够在状态机中执行任务,其中工作由工作线程,可以在 Amazon EC2、Amazon Elastic Compute Cloud (Amazon ECS)、Amazon EElastic Container Service (Amazon ECS)、移动设备上托管 — 基本上任何位置。

Overview

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

注意

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

活动工作线程可以是 Amazon EC2 实例上运行的应用程序、Amazon Lambda函数、移动设备:任何可以进行 HTTP 连接的应用程序,在任何位置托管。当 Step Functions 达到某种活动任务状态时,工作流程将等待活动工作线程轮询任务。活动工作人员通 Step Functions 使用GetActivityTask,然后发送相关活动的 ARN。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 事件。

后续步骤

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